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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海芳 中级黑马   /  2013-5-31 22:11  /  1243 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘海芳 于 2013-6-1 08:12 编辑

问题:
  1. String s="a"+"b"+"c"+"d";
复制代码
这条语句一共创建了多少个对象?为什么?,这个问题纠结了我好久,请各位大大详细的解释下?

评分

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

查看全部评分

5 个回复

倒序浏览
创建了一个对象吧,加号只是个连接符,"a"+"b"+"c"+"d"合起来就相当于abcd
回复 使用道具 举报
赵利斌 发表于 2013-5-31 22:31
创建了一个对象吧,加号只是个连接符,"a"+"b"+"c"+"d"合起来就相当于abcd

我也是这样认为的,可网上好人多不是,我就纠结了...
回复 使用道具 举报
就创建了一个
String s = "a" + "b" + "c" + "d" ;
赋值符号右边的"a"、"b"、"c"、"d"都是常量
对于常量,编译时就直接存储它们的字面值而不是它们的引用
在编译时就直接讲它们连接的结果提取出来变成了"abcd"
该语句在class文件中就相当于String s = "abcd"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个

评分

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

查看全部评分

回复 使用道具 举报
String s="a"+"b"+"c"+"d";
其实应该是这样的,每一个字符串都是一个对象,其实是String s1 = "a";而这里可以相加其实,是因为重写了toString方法,加的不是地址值
回复 使用道具 举报
  1. public class test{
  2.         public static void main(String[] args){
  3.                 String s="a"+"b";
  4.                 System.out.println(s);
  5.         }
  6. }
复制代码
是创建了一个对象,
自定义的一个String 型的S对象,当然只有一个对象指向,
后边相当于是在向这个对象里添加内容,
不管添加了什么,只要类型正确都是属于这个对象里的。
上面的打印结果是ab。+在String类型应用时是个连接符。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马