去掉,st1.i和st2.i的值还都是47,但不再指向同一存储体

解决方案 »

  1.   

    但是我用
    System.out.println(st1+" "+st2);
    显示:StaticP@126b249 StaticP@182f0db
    不知道上面这个显示是什么意思?如果是存储体,显然st1,st2不是指向同一储存体。又怎么解释?
    谢谢
      

  2.   

    StaticP@126b249 StaticP@182f0db
    @后面可以理解为内存地址
      

  3.   

    楼上还是没看明白我的意思。
    为什么这两个内从地址不一样?
    class StaticTest {
    static int i = 47 ;
    }
    ..........
    StaticTest st1=new StaticTest();
    StaticTest st2=new StaticTest();
    书上说这里st1.i和st2.i的值都是47,因为是指向同一块储存体。
    System.out.println(st1+" "+st2);
    显示:StaticTest@126b249 StaticTest@182f0db不是说st1和st2都指向同一块储存体了,怎么StaticTest@126b249 StaticTest@182f0db不一样啊?
      

  4.   

    st1和st2 是不同对象应该存储再不同的存储体,但是由于i是static 类型所以所有对象对应的这个变量都是在同一个存储体吧
      

  5.   

    同意cauczqy0905(Benge)的,
    这个好象牵涉到一个存储的问题,Java的对象的reference都是存在栈里的﹐
    而对象则存在于堆中,Java从堆中为对象分配内存。所以我怀疑你说的那个是栈地址
      

  6.   

    StaticTest@126b249 StaticTest@182f0db是两个类实例的内存地址