问题描述
Stringa=newString("b"+"c");这里创建了几个对象?如果知道的朋友请解释下答案的原理……我的答案是2个,其中a是实例的,bc是拘留的。其中两个都是在堆当中的。
解决方案
解决方案二:
在页面的上方有一个搜索框,在里面输入“String几个对象”,然后单击搜索,然后。。
解决方案三:
“b”"C"不知道在JVM是不是本身就存在的如果是存在的话那么只有两个"b"+"C"生成一个新的对象newString又生成一个对象
解决方案四:
我搜索了把链接发出来吧引用1楼ticmy的回复:
在页面的上方有一个搜索框,在里面输入“String几个对象”,然后单击搜索,然后。。
解决方案五:
如果常量池中原来没有"bc",就会创建两个实例;如果有"bc",就会创建一个实例。栈:存放基本类型的变量数据和对象的引用堆:存放所有new出来的对象常量池:存放字符串常量和基本类型常量(publicstaticfinal),对于equals相等的字符串,在常量池中永远只有一份。对于编译器来说,"bc"和"b"+"c"没有区别。程序执行到这里的时候,如果常量池中没有"bc",就会建立一个"bc"对象,如果有就不建立。不管常量池中的情况如何,总是会在堆中创建一个对象。
时间: 2024-10-18 13:52:38