Java菜鸟:非static属性变量被调用时的从属问题

notosday 发布于 2015/04/24 17:30
阅读 145
收藏 0
public class MyTest{
    //静态变量num
    static int num = 0;
    public MyTest(){
        num ++;
    }
    //两个类对象test1和test2,来测试内存中num的存储情况
    public static void main(String[] args){
        MyTest test1 = new MyTest();
        new MyTest();
        System.out.println(MyTest.num);
        new MyTest();
        MyTest test2 = new MyTest();
        System.out.println(test1.num);
        System.out.println(test2.num);
       }
}
输出为:2 4 4
其中num应该是属于类MyTest的而非test1和test2.

现在我把num的static属性去掉,并将MyTest.num改成test1.num,则输出:1 1 1

那么问题来了,new MyTest()执行时,num被储存到了内存哪里?
如果要显示各个new MyTest()执行时所生成的num该怎么办?
new MyTest()生成的num什么时候被JVM销毁?
new MyTest()生成的num如果无法将其显示,这算不算系统垃圾?
可能我表述不清,但大概就是这个意思,请大侠赐教!
加载中
0
lock_free
lock_free
  1. 静态变量num 属于 MyTest.class ,非静态变量num 属于 MyTest 实例类。
  2. 这个不知道啥意思,直接去掉static 不就可以了吗
  3. new MyTest()的num 在实例被回收的时候一起回收了
  4. new MyTest()的num怎么会不能显示呢?写get set 不就完了吗。
notosday
notosday
哦,原来get(),set()方法可以调用。还是要多看看API。。。谢谢大侠!
返回顶部
顶部