黑马程序员技术交流社区
标题:
字符串对象引用
[打印本页]
作者:
李伟
时间:
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