连城住房和城乡建设局门户网站,广汉做网站,建设互联网站的目的,重庆营销型网站开发公司电话在java17中 #xff1a;
问题1#xff1a;new String(abc)会产生多少个对象#xff1f;
分两种情况#xff1a;
情况1#xff1a;
如果”abc”这个字符串常量不存在#xff0c;则创建两个对象#xff0c;分别是“abc”这个字符串常量#xff0c;以及ne…在java17中
问题1new String(abc)会产生多少个对象
分两种情况
情况1
如果”abc”这个字符串常量不存在则创建两个对象分别是“abc”这个字符串常量以及new String这个实例对象
情况2
如果”abc“这个字符串常量存在则只会创建一个对象就是String这个对象。
分析
new关键字根据已经加载的系统类Sting在堆内存里面去实例化一个字符串对象然后在String对象的构造函数里面传递了一个”abc“的一个字符串因为String里面的字符串成员变量是一个final修饰的所以它是一个字符串常量所以接下来JVM会去拿字面量abc去字符串常量池里面去试图找到对应它的一个String的对象引用如果拿不到就会在堆内存里面去创建一个”abc“的String对象并且把引用保存到字符串常量池里面后续如果再有字面量”abc“的一个定义只需要从常量池里面获取对应的引用就可以了不需要再创建。
问题2String str “ab” “c” 会创建几个对象 ?
分析
”ab“”c”在编译阶段编译为abc字符串被放到字符串常量池中。常量与常量的拼接在编译阶段会优化。
所以会创建一个对象abc
问题3String abc a new String(bc)会创建几个对象 ? 分析
通过javap -v test.class反编译可知 会产生一个new String”bc“对象和一个bc字符串常量
问题4String str new String(“a”) new String(“b”) 会创建几个对象
分析 通过javap -v test.class反编译可知 会创建四个对象一个 new String(“a”)、一个常量池的a、一个 new String(“b”)和一个常量池的b 在java1.8中
问题1new String(abc)会产生多少个对象
与java17一致
问题2String str “ab” “c” 会创建几个对象 ? 与java17一致
问题3String abc a new String(bc)会创建几个对象 ?
分析 会产生一个StringBuilder对象、一个字符串常量a、一个string”bc“对象、一个bc字符串常量 深入剖析 StringBuilder 的 toString() 方法中有 new String(value, 0, count)、加上new String(“abc”)对象 总共4个对象 问题4String str new String(“a”) new String(“b”) 会创建几个对象
分析 会产生一个StringBuilder对象、一个string”a”对象、一个a字符串常量、一个string“b”对象、一个b字符串常量、加上一个new String(“ab”)对象总共6个对象