str1 == str2将返回true,为什么呢?Java中的基本数据类型使用"=="可以判断操作数是否相等,对于对象则判断这两个对象的内存地址是否相同。Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字符串常量,str1创建字符串常量"abc"时,虚拟机会先检测字符串池中是否包含该字符串,如果不包含则创建该字符串常量,并将其保存在字符串池中,然后再返回。str2也赋值为"abc",这时字符串池中已存在该字符串,不再创建,直接返回该字符串。也就是str1、str2引用同一个字符串,地址是相同的,因此str1 == str2成立。但是使用new关键字创建的字符串会新开辟内存看空间,因此str2 == str3不成立。——以上内容摘自《Java开发实战1200例(第Ⅰ卷)》