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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周斌 中级黑马   /  2012-11-4 01:06  /  1544 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周斌 于 2012-11-7 12:01 编辑

String s1 = "hello";
String s2 = "hello";
上面两句与下面两句有什么不同呢?
String s1 = new String("hello");
String s2 = new String("hello");

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 种生祥 于 2012-11-4 01:18 编辑

String s1 = "hello";
String s2 = "hello";//s1,s2是字符串
上面两句与下面两句有什么不同呢?
String s1 = new String("hello");
String s2 = new String("hello");//s1,s2是String类的对象并进行初始化

String s1 = "hello";
等效于
char  data[] = {'h','e','l','l','o'};
String s1 = new String(data);

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

回复 使用道具 举报
上面两句是定义了两个String类型的引用变量指向了同一个字符串,s1==s2返回true
后面两句是定义了两个不同的String对象,内容都是hello,s1==s2返回false,s1.equels(s2)返回true
回复 使用道具 举报
本帖最后由 任雷彬 于 2012-11-4 10:06 编辑



  • String s1= “hello”; 与String s2 =new String(“hello”);的区别是
    String s1 包含一个对象,String s2包含两个对象。
  • 因为字符串会存放在一个字符串池中,当创建对象是会先在字符串中寻找对象使用,
  • 而 String s2 = new String(“hello”);中new会在堆内存中建立一个新的对象,而字符串对象还要在字符串
  • 中寻找,所以又会建立一个对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马