黑马程序员技术交流社区
标题:
下面程序的输出结果是什么
[打印本页]
作者:
1161272014
时间:
2012-7-14 09:52
标题:
下面程序的输出结果是什么
String a="abc";
String b="abc";
System.out.println(a==b);
System.out.println(a.equals(“b”));
作者:
陆强强
时间:
2012-7-14 10:01
去看老毕的day13
作者:
耿立刚
时间:
2012-7-14 10:10
直接代码截图说明:
1.png
(15.55 KB, 下载次数: 14)
下载附件
2012-7-14 10:10 上传
2.png
(12.93 KB, 下载次数: 13)
下载附件
2012-7-14 10:10 上传
作者:
李思静
时间:
2012-7-14 10:18
。。。这个也太狠了
作者:
张_涛
时间:
2012-7-14 10:19
1.创建String对象的两种方式及区别:
1)String a = "abc";(采用字面值方式赋值):查找String Pool中是否存在"abc"这个对象,如果不存在,则在String Pool中创建一个"abc"对象,然后将String Pool中的这个"abc"对象的地址返回回来,这样a会指向String Pool中的这个"abc"字符串对象;如果存在,则不创建任何对象,直接将String Pool中的这个"abc"对象返回来,赋给a。
2)String b = new String("abc");首先在StringPool中查找有没有"abc"这个对象,如果有,则不在String Pool中再去创建"abc"这个对象,直接在堆中创建一个"abc"字符串对象,然后将堆中的这个"abc"对象返回来,使得b指向了堆中创建的"abc"对象;如果Sting Pool中没有,则先在String Pool中创建一个"abc"字符串对象,再去堆中创建一个"abc"字符串对象,最后返回堆中创建的对象。
2.String类重写了equals方法,其比较的是字符串的内容,代码如下
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
3."=="比较的是两个对象在内存中的地址,即两个对象引用是否指向同一个对象。
观察你的代码,你的意图是用判定a、b两个对象引用的equals和==关系。根据第一种字符串对象创建方式可得,均返回true。
作者:
韩伟
时间:
2012-7-14 11:02
额,这种问题自己运行一下就很清楚了啊。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2