黑马程序员技术交流社区
标题:
与静态相关的问题,此处的代码输出的两个对象为何相等?
[打印本页]
作者:
于XINCHENG
时间:
2013-9-6 18:52
标题:
与静态相关的问题,此处的代码输出的两个对象为何相等?
本帖最后由 于XINCHENG 于 2013-9-7 09:59 编辑
public class Test01 {
int a = 1;
static Test01 testA = new Test01();
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(testA);
System.out.println(testA.testA);
System.out.println(testA == testA.testA); // 注意:此处的输出结果为true!!!
}
}
复制代码
请问各位高手一个问题,为什么注释处的输出结果为true?谢谢!
可能是我的问题描述的不明白,首先我想知道static Test01 testA = new Test01(); 中的对象new Test01()是在Test01.class文件加载的时候就存在了吗?第二,我想知道此对象new Test01()存在于堆内存还是方法区?第三,我想知道testA == testA.testA的结果为什么是true,谢谢各位了!
作者:
李锡碧
时间:
2013-9-6 19:01
类属性属于整个类,当系统第一次准备使用这个类时,系统会为该类属性分配内存空间,类属性开始生效,直到该类被卸载,该类的类属性所占的内存才被系统的垃圾回收机制回收。类属性生存范围几乎等同于该类的生存范围。
作者:
焦允
时间:
2013-9-6 19:07
静态成员变量就是用static修饰的变量。静态变量所以整个类,可以通过类名调用。
当你在定义类的时候,发现某个属性可以被这个类的所有实例所共享,那么就可以定义为静态的。
那么,这个静态变量被这个类任意个对象改变,其它对象里的也都会改变。
静态变量随类一起加载而进行初始化。
作者:
于XINCHENG
时间:
2013-9-7 01:26
刚刚是我的问题描述的不清楚,现在修改了一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2