黑马程序员技术交流社区

标题: 字符串问题 [打印本页]

作者: s476596497    时间: 2014-1-21 08:30
标题: 字符串问题
本帖最后由 s476596497 于 2014-1-21 09:23 编辑

String ss = "a"+"b"+"c"+"d";

这样定义 字符串,内存中创建了几个 对象呢?

String ss=new String("a")+new String("b")+new String("c")+new String("d");
跟这个是不一样呢?
如果ss.getClass()返回的字节码是一份?还是会异常?

作者: kkopopo    时间: 2014-1-21 09:15
就没个大神给解答一下嘛? 我和楼主一直在关注这个问题啊 !  管理大大要不要伸手给解析一下!
1.创建了一个对象,String字符串累加也只产生了一个对象。
2.楼主测试了没? 求大神出现!
作者: s476596497    时间: 2014-1-21 09:18
kkopopo 发表于 2014-1-21 09:15
就没个大神给解答一下嘛? 我和楼主一直在关注这个问题啊 !  管理大大要不要伸手给解析一下!
1.创建了一 ...

没有啊 想不明白  也不知道怎么做
作者: kkopopo    时间: 2014-1-21 09:22
s476596497 发表于 2014-1-21 09:18
没有啊 想不明白  也不知道怎么做

你在探寻什么机制? 字符串累加产生的垃圾还是看看getClass 返回的是什么?
作者: s476596497    时间: 2014-1-21 09:24
kkopopo 发表于 2014-1-21 09:22
你在探寻什么机制? 字符串累加产生的垃圾还是看看getClass 返回的是什么? ...

第二个ss能返回好几个对象,但是能返回什么字节码呢?
作者: 黄晓鑫    时间: 2014-1-21 12:05
String ss = "a"+"b"+"c"+"d";

这样定义 字符串,内存中创建了几个 对象呢?一个对象 就ss

String ss=new String("a")+new String("b")+new String("c")+new String("d");
跟这个是不一样呢?也是一个对象就ss
如果ss.getClass()返回的字节码是一份?还是会异常?
返回一个字节码 当然你的变量名是不可以相同的 不能2个ss
作者: s476596497    时间: 2014-1-21 12:09
黄晓鑫 发表于 2014-1-21 12:05
String ss = "a"+"b"+"c"+"d";

这样定义 字符串,内存中创建了几个 对象呢?一个对象 就ss

那new String("a")这样不算是创建一个匿名对象吗?为什么没有返回字节码呢?如果想获取这个字节码该怎么做?
作者: 黄晓鑫    时间: 2014-1-21 12:12
算创建了一个对象 但是把对象赋值给了ss 不就是一个对象 这算是赋值动作
作者: s476596497    时间: 2014-1-21 12:14
黄晓鑫 发表于 2014-1-21 12:12
算创建了一个对象 但是把对象赋值给了ss 不就是一个对象 这算是赋值动作

这可以把很多对象赋值给同一个变量吗
作者: 黄晓鑫    时间: 2014-1-21 12:17
可以的 就跟输出语句一样 “”+“”+1+“”这个也算一个对象 这应该是享元设计模式
作者: s476596497    时间: 2014-1-21 12:19
黄晓鑫 发表于 2014-1-21 12:17
可以的 就跟输出语句一样 “”+“”+1+“”这个也算一个对象 这应该是享元设计模式 ...

哦  明白了  感谢大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2