我的问题很简单。是什么区别 -
s3=s1+s2
和s3="string"
?
我认为我很难解释它。
我理解==
和.equals()
之间的区别。
答案 0 :(得分:3)
当发生2个对象的连接时,将创建一个新的String
对象。但是如果你连接2个字符串文字,那么就不会创建一个新对象。
String s3=s1+s2; // new object created
System.out.println(s3=="string"); // false
String s4="str"+"ing"; // this will not create a new string object
System.out.println(s4=="string"); // true
当编译器遇到String s4="str"+"ing";
时,编译器对编译时常量进行常量折叠并将其放入一个字符串中,因为连接本身就发生在编译时,因此完成的字符串会进入恒定的游泳池。
答案 1 :(得分:2)
答案 2 :(得分:1)
s3
是一个新的String
对象,是s1
和s2
==
会比较他们的内存地址。不是他们的文字价值。使用.equals()
答案 3 :(得分:1)
函数==检查to的对象是否相同。
此处内容相同但对象不相同。
查看Here了解==和.equals
之间的区别答案 4 :(得分:0)
==用于原始类型。在对象上,您应该使用compare或equals。字符串以特定的方式处理。因为字符串上的==不能很好地工作,因为它们由jvm连接起来。它只需要对字符串的引用,==检查内存位置。