黑马程序员技术交流社区

标题: 字符串对象引用 [打印本页]

作者: 李伟    时间: 2012-6-27 18:18
标题: 字符串对象引用
本帖最后由 李伟 于 2012-6-29 21:43 编辑

class Demo
{
        public static void main(String[] args)
        {
                String s1="java";
                String s2=new String("java");//毕老师好像是说这条语句创建了两个对象,分别是哪两个呢,相对应的地址值呢
                System.out.println(s1);//既然s1和s2都是对象的引用,应该是地址值,那么为什么打印出来的不是地址值,而是字符串。
                System.out.println(s2);
                System.out.println(s1==s2);
                System.out.println(s1.equals(s2));
        }
}
作者: 车风波    时间: 2012-6-27 18:24
两个对象一个在堆内存中,一个在常量区中。
System.out.println()是调用的对象的toString()方法,你看String的源代码:
public String toString() {
        return this;
    }
返回的就是当前String对象。
作者: 李文龙    时间: 2012-6-27 18:40
虽然说 s1 和 s2 存的都是 java 这个字符串,但是这属于两个不同的对象,所以程序运行创建了2个对象,相对应的地址值就是内存在存储s1和s2的地址值,你可以通过函数调用将相应的地址值打印输出出来, System.out.println(s1);//这里打印输出的自然是s1中存储的字符串了,原因和楼上说的一样,请问楼主你是真的明白了吗,比如说
int a=3;
System.out.println(a);//这里输出3大家都知道,不会输出对应的地址值,不过是将int类型变成了String类型,原理是不变了,就是这样。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2