黑马程序员技术交流社区

标题: 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