A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【1】所属对象:
静态成员变量属于其所在的类,而非静态成员变量属于所在的对象;
【2】内存位置:
静态成员变量存放在方法区中的静态区,而非静态成员变量跟随对象存储在堆内存中;
【3】生命周期:
静态成员变量随着类的加载而加载,随着类的消失而消失,生命周期相对较长;
非静态成员变量跟着对象的加载而加载,随着对象的消失而消失。生命周期相对较短;
【4】调用方式不同:
静态成员变量可以用“类名.”来调用,也可以用“对象名.”来调用;
而非静态成员变量只能用“对象名.”来调用;
【5】使用不同
静态成员变量是类的所有对象的共享数据,而非静态成员变量是对象的特有数据。

评分

参与人数 1技术分 +2 收起 理由
lwj123 + 2 很给力!

查看全部评分

5 个回复

倒序浏览
补充:
非静态成员变量的赋值只能在3个地方赋值:
1、定义时赋值2、在非静态代码块中赋值3、在构造方法中赋值
通过javap -c 类名可以知道3种赋值方式原理是一样的,赋值语句的实现都会被抽取到构造方法中赋值

静态成员变量的赋值只能在2个地方赋值:
1、定义时赋值2、在静态代码块中赋值
通过javap -c 类名可以知道3种赋值方式原理是一样的,赋值语句的实现都会被抽取到静态代码块中赋值
回复 使用道具 举报
学习下。。。
回复 使用道具 举报
学习下      
回复 使用道具 举报
lwj123 发表于 2015-3-19 22:14
补充:
非静态成员变量的赋值只能在3个地方赋值:
1、定义时赋值2、在非静态代码块中赋值3、在构造方法中赋 ...

弱弱的问句,非静态代码块是不是就是构造代码块?

点评

嗯  发表于 2015-3-20 07:19
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马