答:共创建了7个对象。 String ss = “a”+”b”+”c”; //创建了5个对象 String ss = “a”+”b”+”c”+”d”; //创建了7个对象 String ss = “a”+”b”+”c”+”d”+”e”; //创建了9个对象 String ss = “a”+”b”+”c”+”d”+”e”+”f”; //创建了11个对象 注: ...
String s="a"+"b"+"c";如果你比较一下Java源代码和反编译后的字节码文件,就可以直观的看到答案,只创建了一个String对象。估计大家会有疑问了,为什么源代码中字符串拼接的操作,在编译完成后会消失,直接呈现为一个拼接后的完整字符串呢?这是因为在编译期间,应用了编译器优化中一种被称为常量折叠(Constant...
String str = "aaa" +newString("bbb")创建了几个String对象? "aa"一个对象,new Sring()一个对象, "bbb"一个对象, "aa" + new String("bbb");一个对象,共4个对象。 解释下字符串池:他是一个由字符组成的一个数组就相当于char str1 =new char[]{a,b,c}; 如果不是遇到新的字符串,则直接...
String s="a"+"b"+"c" 创建了几个对象 答案:创建了一个 赋值符号右边的"a"、"b"、"c"都是常量 对于常量,编译时就直接存储它们的字面值而不是它们的引用 在编译时就直接将它们连接的结果提取出来变成了"abc" 该语句在class文件中就相当于String s = "abc" 然后当JVM执行到这一句的时候, 就在String ...
String s = "a" + "b" + "c" 这样直接几个字面值相加的,java文件在编译期间就已经将这条语句做了优化,将其直接变成 "abc",等到运行的时候会先去字符串常量池中寻找有没有“abc”这个字符串,若有,则将其地址给 s;若没有,则先在字符串常量池里创建“abc”,然后再把地址给s 因此,...
问题一: String a = “a” + “b” + “c”; 创建了几个对象 答案:一个对象 javac编译可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个对应常量相连的结果。 问题一:String s = “aaa” + new String(“bbb”); ...
Java面试题(18)String s="a"+"b"+"c",到底创建了几个对象? 序言 资料 https://www.cnblogs.com/trunks2008/p/15146313.html
答案是只创建了一个String对象。 javac编译器编译时,可以对字符串常量直接相加的表达式进行优化,不必要等到运行期去进行加法运算处理,而是在编译时去掉其中的加号,直接将其编译成一个这些常量相连的结果。相当于直接定义了一个”abcd”的字符串,所以,上面的代码应该只创建了一个String对象。
1个对象 abc 因为"a" ,"b" , "c"都是常量最后编辑于 :2019-07-19 16:38:49 ©著作权归作者所有,转载或内容合作请联系作者Java © 著作权归作者所有 举报文章 yayooo 菜鸟阵线联盟 总资产55 共写了46913字 获得142个赞 共14个粉丝 惠州市正规最全司法落户亲子鍳定中心地址(附2025年1月最新机构...
就创建了一个 String s = "a" + "b" + "c" + "d" + "e"; 赋值符号右边的"a"、"b"...