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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 于XINCHENG 于 2013-9-7 09:59 编辑
  1. public class Test01 {
  2.         int a = 1;
  3.         static Test01 testA = new Test01();
  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                 System.out.println(testA);
  7.                 System.out.println(testA.testA);
  8.                 System.out.println(testA == testA.testA); // 注意:此处的输出结果为true!!!
  9. }
  10. }
复制代码
请问各位高手一个问题,为什么注释处的输出结果为true?谢谢!
可能是我的问题描述的不明白,首先我想知道static Test01 testA = new Test01(); 中的对象new Test01()是在Test01.class文件加载的时候就存在了吗?第二,我想知道此对象new Test01()存在于堆内存还是方法区?第三,我想知道testA == testA.testA的结果为什么是true,谢谢各位了!

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
类属性属于整个类,当系统第一次准备使用这个类时,系统会为该类属性分配内存空间,类属性开始生效,直到该类被卸载,该类的类属性所占的内存才被系统的垃圾回收机制回收。类属性生存范围几乎等同于该类的生存范围。

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 赞一个!

查看全部评分

回复 使用道具 举报 0 1
静态成员变量就是用static修饰的变量。静态变量所以整个类,可以通过类名调用。
当你在定义类的时候,发现某个属性可以被这个类的所有实例所共享,那么就可以定义为静态的。
那么,这个静态变量被这个类任意个对象改变,其它对象里的也都会改变。
静态变量随类一起加载而进行初始化。

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刚刚是我的问题描述的不清楚,现在修改了一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马