黑马程序员技术交流社区
标题:
静态成员变量和非静态成员变量的区别
[打印本页]
作者:
夜班心桥
时间:
2015-3-19 22:08
标题:
静态成员变量和非静态成员变量的区别
【1】所属对象:
静态成员变量属于其所在的类,而非静态成员变量属于所在的对象;
【2】内存位置:
静态成员变量存放在方法区中的静态区,而非静态成员变量跟随对象存储在堆内存中;
【3】生命周期:
静态成员变量随着类的加载而加载,随着类的消失而消失,生命周期相对较长;
非静态成员变量跟着对象的加载而加载,随着对象的消失而消失。生命周期相对较短;
【4】调用方式不同:
静态成员变量可以用“类名.”来调用,也可以用“对象名.”来调用;
而非静态成员变量只能用“对象名.”来调用;
【5】使用不同
静态成员变量是类的所有对象的共享数据,而非静态成员变量是对象的特有数据。
作者:
lwj123
时间:
2015-3-19 22:14
补充:
非静态成员变量的赋值只能在3个地方赋值:
1、定义时赋值2、在非静态代码块中赋值3、在构造方法中赋值
通过javap -c 类名可以知道3种赋值方式原理是一样的,赋值语句的实现都会被抽取到构造方法中赋值
静态成员变量的赋值只能在2个地方赋值:
1、定义时赋值2、在静态代码块中赋值
通过javap -c 类名可以知道3种赋值方式原理是一样的,赋值语句的实现都会被抽取到静态代码块中赋值
作者:
cq280309216
时间:
2015-3-19 22:46
学习下。。。
作者:
Grady
时间:
2015-3-19 23:09
学习下
作者:
关山明月
时间:
2015-3-19 23:24
lwj123 发表于 2015-3-19 22:14
补充:
非静态成员变量的赋值只能在3个地方赋值:
1、定义时赋值2、在非静态代码块中赋值3、在构造方法中赋 ...
弱弱的问句,非静态代码块是不是就是构造代码块?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2