关于java 求高手解

上面的结果为 str3==str4 我可以理解为将一个相同的地址分别赋值给str3和str4么?求高手详细解答 小弟刚入门

可以这么理解的,‘ == ’ 比较的是值地址是否相等,str3和str4同指一个值地址空间。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-24
首先要知道,String在java里面是一个类,你写了一句String str3="China";
过程是首先在java虚拟机中为"China"new了一个空间,然后str3是指向这个空间的一个引用。
再定义str4="china"时候,同样是一个指向这片空间的引用,两个是指向同一片空间的,所以用==判断结果是true

就像楼上说的,如果是用String str4=new String("china");,这样就是强制分配新的空间,这样判断就肯定是false
第2个回答  2014-02-24

因为字符串是不可变的,虚拟机为了提高效率和节省内存,对相同字符串序列的字符串直接量使用同一个实例。

要相同有两点

    相同字符串序列

    直接量

如果你另外创建 str5 = new String("china");

str3 == str5 is false

因为str5不是直接量,虽然字符串序列相同

第3个回答  2014-02-24
第一次s3时,如果string对象池中没有,则创建个
第二次s4时,则引用了第一次s3对象处中的数据,索引指向的引用是一样的