黑马程序员技术交流社区
标题:
求解求解啊????????
[打印本页]
作者:
Amor~
时间:
2016-4-21 21:37
标题:
求解求解啊????????
String s1 = “abc”;
String s2 = new String(“abc”);
System.out.println(s1==s2);
String s3 = “你好吗”;
String s4 =”你”;
String s5 =”好吗”;
System.out.println(s3==(s4+s5))
作者:
牛凌霄
时间:
2016-4-21 21:43
结果是倆false
作者:
淡然无味
时间:
2016-4-21 22:47
false 因为new String(“abc”)中存放的是字符串常量abc的副本,实际上s2指向的是一个在堆内存中对象的地址,所以这里s1==s2返回的是false;false 这里虽然是+串起来了,但是这里s4、s5都是变量,底层是调用StringBuffer的append方法来实现的最后返回的结果需要调用toSting方法才能赋值给String类,但是调用toSting方法也意味着在堆中创建了一个新的对象,所以地址肯定不同,为false
作者:
兵蜂
时间:
2016-4-21 23:06
同意楼上,赞........................
作者:
huangchenglin
时间:
2016-4-21 23:25
答案是两个falseJava 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2