String a = "abc";
String b = "abc";
System.out.println(a==b); true
String a = new String ("abc");
String b = "abc";
System.out.println(a==b); //false
为啥第一个是true啊 ,不应该是false吗 a,b不是应该存的"abc"的一个哈希值嘛
第一个比较其实比较的是引用的地址值是否相同,而String a="abc"这样直接创建,abc是在方法区存储,
a,b引用指向的是同一片区域,所以地址值相同,所以为true
第二个String a = new String ("abc");其实是创建了两个对象,a引用是指向对内存的,然后对内存再指向方法区里的abc,引用b是直接指向方法区,因此地址值是不同的,所以为false