- public class Test {
- public static void main(String[] args) {
- String str1 = "1";
- String str2 = "1";
- String str3 = new String("1");
- System.out.println(str1 == str2);
- System.out.println(str1 == str3);
- }
- }
- //结果是:true,false
复制代码 写个小程序帮助理解吧!
str1 = “1”的操作:
java 虚拟机会到内存池中去找有没有已经存储“1”这个空间,
如果有的话,就把此空间的地址给str1,
没有的话,开劈一块空间存储“1”,把地址给到str1.
String str3 = new String("1")的操作:
因为用到了new关键字,java虚拟机不管你内存池中是否有存储了“1”的空间,
直接开劈空间放“1”,把地址给到str3.
因为==比较的是地址是否相等,所以结果是true,false。
希望对你的理解有帮助............ |