本帖最后由 z1342802487 于 2014-4-17 16:52 编辑
java运行环境有一个字符串池。比如String str="abcd"时,会首先查看字符串池中是否存在字符串"abcd",如果存在则直接将"abcd"赋给str,如果不存在则会先在字符串池中新建一个字符串"abcd",然后再将其赋给str。而执行String str=new String("abcd")时,不管字符串池中有没有"abcd"都会在堆中新建一个字符串对象然后将其赋给str引用。我们知道,对两个引用变量,使用==判断它们的值(引用)是否相等,即指向同一个对象:
- public class Test
- {
- public static void main(String [] args)
- {
- String s1 = "abcd";
- String s2 = "abcd";
- String s3 = new String("abcd");
- String s4 = new String("abcd");
- System.out.println(s1==s2);
- System.out.println(s1==s3);
- System.out.println(s3==s4);
- }
- }
复制代码
结果为
true
false
false |