-5

我的问题很简单。有什么区别-

s3=s1+s2s3="string"

我觉得我解释得太差了。

==我明白和之间的区别.equals()

4

5 回答 5

4

String当 2 个对象串联时,将创建一个新对象。但是如果你 concat 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";,编译器会对编译时常量进行常量折叠并将其放入一个字符串中,因为连接发生在编译时本身,因此完成的字符串进入常量池。

于 2013-10-17T06:04:47.050 回答
2

==运算符检查对对象的引用是否相等。

equals()方法检查对象的值是否相等。

比较字符串使用等于

System.out.println(s3.equals("string"));
于 2013-10-17T06:05:21.053 回答
1

s3是一个新String对象,它是s1s2

==将比较它们的内存地址。不是它们的字面值。利用.equals()

于 2013-10-17T06:03:16.113 回答
1

函数 == 检查 to 的对象是否相同。

这里内容相同,但对象不同。

在此处查找== 和 .equals 之间的区别

于 2013-10-17T06:07:20.900 回答
0

== 用于原始类型。在对象上,您应该使用比较或等于。字符串以特定方式处理。因为 == 在字符串上并不总是正常工作,这是由于 jvm 将它们连接起来所致。它只需要对字符串的引用,== 检查内存位置。

于 2013-10-17T06:06:45.767 回答