A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Amor~ 中级黑马   /  2016-4-21 21:37  /  576 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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))  

4 个回复

倒序浏览
结果是倆false
回复 使用道具 举报
false  因为new String(“abc”)中存放的是字符串常量abc的副本,实际上s2指向的是一个在堆内存中对象的地址,所以这里s1==s2返回的是false;false 这里虽然是+串起来了,但是这里s4、s5都是变量,底层是调用StringBuffer的append方法来实现的最后返回的结果需要调用toSting方法才能赋值给String类,但是调用toSting方法也意味着在堆中创建了一个新的对象,所以地址肯定不同,为false
回复 使用道具 举报
同意楼上,赞........................
回复 使用道具 举报
答案是两个falseJava 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马