黑马程序员技术交流社区
标题:
String问题
[打印本页]
作者:
潘际昌
时间:
2013-11-23 18:41
标题:
String问题
本帖最后由 潘际昌 于 2013-11-24 01:00 编辑
class StringDemo
{
public static void main(String[] args)
{
String s1 = "a";
String s2 = "b";
String str1 = s1 + s2;
String str2="a"+"b";
System.out.println(str1== "ab");
System.out.println(str2 == "ab");
}
}求结果的区别,为什么会不同。
作者:
容嬷嬷当年也是
时间:
2013-11-23 18:47
String str1 = s1 + s2; s1 + s2; 代表的是一个地址。
String str2="a"+"b"; "a"+"b"; 代表的的是一个地址的值
所以 它们输出的结果是不一样。 希望你能明白。
作者:
中关村阿旺
时间:
2013-11-23 20:57
因为String str1 = s1 + s2;是把两个字符串的内存地址相连接,并没有在常量池中创建一个“ab”字符串。它会先去找s1的引用,之后再找s2的引用,然后把它们两个指向的对象相连接,不会创建对象。而String str2="a"+"b";则不同,它会在常量池中查找有没有"ab"字符串对象,如果有,就用str2指向它的内存地址值,如果没有,就会创建一个"ab"字符串对象。所以,结果第一个输出语句输出false,第2个输出true了。
作者:
che201311
时间:
2013-11-26 10:16
String str1 = s1 + s2; s1 + s2; 代表的是一个地址。
String str2="a"+"b"; "a"+"b"; 代表的的是一个地址的值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2