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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 敲敲乐z 中级黑马   /  2016-8-9 00:25  /  905 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = "a" + "b" + "c" + "d";
这个题目,一共创建了几个对象?

6 个回复

倒序浏览
一个,Java有常量优化机制。对于常量的运算,会将结果运算出来后,判断是否在数据类型的取值范围内,再将值赋予变量
回复 使用道具 举报
创建一个对象
回复 使用道具 举报
不是一个对象就是四个
回复 使用道具 举报
创建了4个对象
既然说到这个问题 就不得不说String s = new String("aaaa");这个创建对象了
那么先说读者问的问题String s = "aa"+"ss"+"ddd"+"fff";
这个是创建了4个对象,因为字符串就是String的匿名对象,只要有一个字符串就创建了一个对象就相当于new String()这个,他们指向了不同的堆内存空间,但是他们都存在常量池中,字符串就是常量大小不能改变(但是StringBuffer和StringBulider是可变字符串)

而String s = new String("aa");这个是开辟了两块堆内存空间,分别指向了各自的地址空间,地址值不同
回复 使用道具 举报
一个。。。
回复 使用道具 举报
就创建了一个
String s = "a" + "b" + "c" + "d" ;
赋值符号右边的"a"、"b"、"c"、"d"都是常量
对于常量,编译时就直接存储它们的字面值而不是它们的引用
在编译时就直接讲它们连接的结果提取出来变成了"abcd"
就相当于String s = "abcd"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马