最赞回答 / Perona
首先明白在计算机的内存中有堆和栈两块空间,其中栈中存放所有对象、函数、变量等的引用;而堆中存放对象、值等。 不管是new出的对象还是用类似String str="慕课网";这类的对象,都是放在堆中的。 Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字符串常量,str创建字符串常量"慕课网"时,虚拟机会先检测字符串池中是否包含该字符串,如果不包含则创建该字符串常量,并将其保存在字符串池中,然后再返回。而执行到String str2=new String("慕课网");系统会直接实例化该对象,而不...
2015-05-28
最赞回答 / Absolute_Duo
你是想问为什么只输出false而没有"使用==将str与str2作比较"这句话吗,其实"使用==将str与str2作比较" + str==str2这个语句的执行顺序是先进行"使用==将str与str2作比较" + str然后将所得的结果字符串与str2进行比较,所以输出时没有"使用==将str与str2作比较"这句话
2015-05-26