我认为是:hello1 hello2
如按java原理结果应是:hello2
但是运行好象是上面的结果,我遇到过类似的,当时认为java为了节省空间,让f和k放同一地址。
不知答对没?

解决方案 »

  1.   

    显然应该是hello1对象==对象不是比较对象是否相等而是比较两个引用是否指向同一个对象除非你用k1 = f1
      

  2.   

    补充一下如果要看是否同一个类的实例,且实例的域值相等可以用k1.equals(f1)
      

  3.   

    嗯,我觉得,从原理来看应该是hello2
    因为虽然都是"df",但两个"df"并不是同一个对象
    不过实际是怎么样,我去试一试再说
      

  4.   

    忘了说了,我理解是hello1 是因为String可以看做是原始类型或者常量f+=""; 实际产生了一个新的字符串对象,虽然内容相同,但一个是对象,另一个原始类型所以不等
      

  5.   

    同意AiNet应该是hello1
    编译器会安排字串常数进行共享.所以f和k开始是共享内存区的。
      

  6.   

    呵呵,答案的确是hello1,佩服AiNet,理解这道题
    首先我们可以看看这道题:
    String s = new String("kk").toString();一共在Heap产生了几个String型的对象?
      

  7.   

    JAVA中每个对象都分配一个内存空间,变量通过引用指向相应的内存块