String 创建几个对象问题(详解
答案:1 悬赏:30 手机版
解决时间 2021-11-27 04:08
- 提问者网友:抽煙菂渘情少年
- 2021-11-26 03:27
String 创建几个对象问题(详解
最佳答案
- 五星知识达人网友:野味小生
- 2021-11-26 04:30
1
String a = new String("b");
创建两个对象
"b"在String pool池中,当创建对象时,堆中会拷贝String池中”b“作为一个对象b1,
然后建立一个新对象该对象的引用a指向b1;
所以创建两个对象。
2
String c="b";
"b"在String池中,c指向该对象;
3
String a="i"+"u"+"s0";
这相当于String a="ius0".当JVM执行到这一句时,就在String pool里找,如果String pool里没有这个字符串,就会产生一个对象(见java面试宝典174页)
如果String pool里有这些字符串就产生2个对象 原因:每做一个连接便会产生一个对象.
4
String a="b";
a=a+"b";//有两个对象,第一a是个对象 2 a+"b"为一个对象
这时 原来 a指向的对象就变为垃圾对象,但后面又被用到所以没被回收 和"b'进行连接成为bb
5
String a="b";
a=a+"c";//有两个对象,第一"c"是个对象 2 a+"c"为一个对象
此时a原来指向的对象成为垃圾对象,由jvm垃圾回收机制回收
6
String c;创建对象个数为 0;
初始化为null
String a = new String("b");
创建两个对象
"b"在String pool池中,当创建对象时,堆中会拷贝String池中”b“作为一个对象b1,
然后建立一个新对象该对象的引用a指向b1;
所以创建两个对象。
2
String c="b";
"b"在String池中,c指向该对象;
3
String a="i"+"u"+"s0";
这相当于String a="ius0".当JVM执行到这一句时,就在String pool里找,如果String pool里没有这个字符串,就会产生一个对象(见java面试宝典174页)
如果String pool里有这些字符串就产生2个对象 原因:每做一个连接便会产生一个对象.
4
String a="b";
a=a+"b";//有两个对象,第一a是个对象 2 a+"b"为一个对象
这时 原来 a指向的对象就变为垃圾对象,但后面又被用到所以没被回收 和"b'进行连接成为bb
5
String a="b";
a=a+"c";//有两个对象,第一"c"是个对象 2 a+"c"为一个对象
此时a原来指向的对象成为垃圾对象,由jvm垃圾回收机制回收
6
String c;创建对象个数为 0;
初始化为null
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯