知识回顾

上一篇总结了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. CentOS7安装GitLab服务

    安装GitLab服务 1.安装必要依赖 yum install -y curl policycoreutils openssh-server openssh-clients postfix 2.下载安 ...

  2. Mock Server 实现post方法的接口(三)

    Mock Server 实现post方法的接口(三) 1.mock server实现的接口,当request中未设置"method"时,会自动将所有method试一次,所以一定要指 ...

  3. linux cp 拷贝文件或目录

    cp 拷贝文件或目录 默认不能拷贝目录 常用来备份: [root@MongoDB ~]# cp a.txt /tmp/ [root@MongoDB ~]# cp /root/a.txt /tmp/ c ...

  4. 前端 CSS 目录

    前端 CSS 介绍 前端 CSS语法 前端 CSS 注释

  5. MyBatis框架基于XML的配置

    什么是MyBatis? 答:它是一个持久层框架 说的太简单了吗?那让我们来看一下官方的文档描述: MyBatis有什么作用呢? 1.持久层的零实现 2.可以自动将数据封装到对象里面不需要手工编写映射的 ...

  6. linux服务器情况

    查看Linux 进程命令  ps -aux 或者ps -ef linux 进程很多 如果需要查找某一个进程可以使用 管道和grep命令 Linux下常用命令  grep  匹配字符   ps 查询Li ...

  7. iOS与H5交互(WKWbebView)

    前言: 在iOS开发中,或多或少的会嵌入一些H5页面,有时候需要原生代码和H5页面进行交互.iOS8开始苹果推出性能更强大的WKWebView,所以一下方法是关于WKWebView与JS的交互. 创建 ...

  8. Windows使用tail命令跟踪日志

    我们知道如果是Unix/Linux环境可以直接使用 tail -f xxx.log即可. 但是Windows并没有自带这个命令,不过从网上可以找到tail.zip 实测可以将其解压放在C:\Windo ...

  9. Java课堂测试——一维数组

    题目: 一个典型的流程是: 2. 用户这时候有两个选择2.1  按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等. 最好用不同的 ...

  10. phpstorm----------phpstorm设置自动更新的ssh信息如何修改--后续增加如何设置自动更新

    1.如何设置phpstorm将本地代码时时同步到远程服务器 注意下面一定要打勾 点击下一步,然后还有一个页面,然后不用做任何操作,直接点击完成.中途有个页面是输入远程服务器ip账号密码链接方式的,那个 ...