知识回顾

上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别。

示例代码

package Variable;

public class VariableDemo {

    //实例变量
int a; //静态变量
static int b; public static void main(String[] args) {
System.out.println(VariableDemo.b);//静态变量可以直接被类调用,实例变量不可以 //新建一个对象 variableDemo
VariableDemo variableDemo = new VariableDemo(); //实例变量和静态变量都可以被对象调用,默认值为0或null
System.out.println(variableDemo.a);//0
System.out.println(variableDemo.b);//0 //再新建两个对象 variableDemo1 、variableDemo2
VariableDemo variableDemo1 = new VariableDemo();
VariableDemo variableDemo2 = new VariableDemo(); //对象variableDemo将静态变量b的值改变
variableDemo.b=10; //静态变量实质上是全局变量,其中一个变量将其值改变,其他对象得到的都是改变后的结果
System.out.println(VariableDemo.b);//10
System.out.println(variableDemo.b);//10
System.out.println(variableDemo1.b);//10
System.out.println(variableDemo2.b);//10 //对象variableDemo将实例对象a的值改变
variableDemo.a = 15; //实例变量属于对象私有,某一个对象将其值改变,不影响其他对象
System.out.println(variableDemo.a);//15
System.out.println(variableDemo1.a);//0
System.out.println(variableDemo2.a);//0
}
}

静态变量和实例变量的区别

1、生命周期不同

实例变量随着对象的创建而存在,随着对象的回收而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

2、调用方式不同

实例变量只能被对象调用。

静态变量可以被对象调用,还可以被类名调用。

3、数据存储位置不同

实例变量存储在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

总结

1.成员变量分为静态变量与实例变量。用 static修饰的变量是静态变量,不用 static 修饰的是实例变量。

2. 实例变量和静态变量都可以被对象调用,数值类型的默认值为0,字符为null

3. 静态变量实质上是全局变量,其中一个变量将其值改变,其他对象得到的都是改变后的结果

4. 实例变量属于对象私有,某一个对象将其值改变,不影响其他对象

Java中静态变量与实例变量的更多相关文章

  1. Java中的类变量、实例变量、类方法、实例方法的区别

    类变量:形如static int a; 顾名思义,类变量可以理解为类的变量,类变量在类加载的时候就已经给它分配了内存空间,不同于实例变量(int a; ),实例变量是在该类创建对象的时候分配内存的.并 ...

  2. 解析Java中静态变量与实例变量的区别

    java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量:另一种没有static修饰,为实例变量.      在语法定义上的区别:静态变量前要加static关键字,而实例 ...

  3. Java 中静态变量和实例变量区别

    Java 中静态变量和实例变量区别 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对 ...

  4. Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序

    实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态 ...

  5. (转)java线程安全问题之静态变量、实例变量、局部变量

    java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如 ...

  6. java线程安全问题之静态变量、实例变量、局部变量

    java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如 ...

  7. Java笔记_静态变量和实例变量的区别

    这里简单做一下笔记,区分Java全局变量里的静态变量与实例变量. 1.Java里的全局变量 首先了解Java里的全局变量,也叫成员变量. 特点: (1).一个类中既不在方法体内,也不在程序块内定义的变 ...

  8. Java中静态变量与非静态变量的区别

    感谢大佬:https://www.cnblogs.com/liuhuijie/p/9175167.html ①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 ...

  9. Java中静态变量的声明位置

    Java中静态变量只能是成员变量,局部方法中的局部变量除final外不能有任何其他修饰符,例如: public class Test { static String x = "1" ...

随机推荐

  1. std unorder_map insert 和 emplace的区别

    std::unordered_map<int, int > map; map.insert(std::make_pair(, )); map.insert(std::make_pair(, ...

  2. flask基础一

    一:flask认知 flask 短小精悍,可扩展强 flask 所有扩展的网址,flask.pocoo.org/externsions 有别于其他的web框架的地方:flask做了一个上下文管理机制 ...

  3. Convert List<Entity> to Json String.

    public static string ToJson(this object obj, string datetimeformats) {     var timeConverter = new I ...

  4. Jmeter学习之--dubbo接口测试

    背景:公司的h5和APP都需要调用许多非http的服务,需要对服务的性能和自动化测试 工具:IDEA ,maven,Jmeter 参考文档: https://testerhome.com/topics ...

  5. Linux如何实现进程监控和守护

    最近新搭建的亚马逊EC2服务器, 上面部署了一个静态的WEB, 启动了一个nginx做代理.最近发现一个问题: Nginx进程隔一段时间就莫名的挂掉了, 然后就出现了网站无法打开的窘境.. 为了防止这 ...

  6. C++实验二——函数重载、函数模板、简单类的定义和实现

    一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...

  7. go 语言环境搭建(Ubuntu + Sublime Text3 + GoSublime + gocode)

    1. 首先安装go http://code.google.com/p/golang-china/wiki/Install 或者http://golang.org/doc/install这里有详细介绍. ...

  8. appium 3 跑起来

    1. 代码如下: from appium import webdriver capabilitise = { "platformName": "Android" ...

  9. python数据类型之元组类型

    #为何要有元组,存放多个值,元组不可变,更多的是用来做查询 t=(1,[1,2,3],'a',(1,2)) #t=tuple((1,[1,2,3],'a',(1,2))) # print(type(t ...

  10. django请求接收及文件上传

    在写后端交互页面的时候常常会遇到接收来自前端页面请求的情况,例如 在写注册页面的时候,会提交一些页面信息,这时需要分三种情况讨论 第一种,接收单项信息: v = request.POST.getlis ...