我们制作以下String对象?
String str1 = new String("ABC");
String str2 = new String("ABC");
String str3 = "ABC";
String str4 = "ABC";
Run Code Online (Sandbox Code Playgroud)
以上两个问题:
system.out.println("valof str1 "+str1 );- 它打印str1为ABC但是当我们比较时if(str1==str2),它会比较字符串对象的参考.jvm如何达到差异?
str1具有不同的充参考str2和str3,但str3与str4具有相同的引用,这样做的JVM检查,如果我们要以平等的运营商(而不是新)已经存在(如果它存在,它不会创建新的对象只是指定相同refernce新变量来建立一个字符串ie str4)但是在新操作员的情况下它不会做这个验证?
Chr*_*ung 11
在Java中,字符串文字(裸露"ABC"而不是new String("ABC"))被实习.也就是说,JVM中只存储了一个副本,并且始终是使用的副本.这就是他们在使用时比较平等的原因==.
以下比较也始终如一:
str1.intern() == str2.intern()
str1.intern() == str3
str2.intern() == str3
str1.intern() == str4
str2.intern() == str4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
351 次 |
| 最近记录: |