2-11的问题
1、常量池、对象池、缓存区,这到底是一个概念,还是不一样啊,感觉学的乱乱的。
2、
String str1="imoc";
String str2="imoc";
它们的具体扩展代码是什么样子的?
正在回答 回答被采纳积分+1
同学你好,1、用new产生的对象都在这儿,这是对象池,如:Integer a=22;实际的扩展代码是:Integer a=Integer.valueOf(22);,所以这个a的对象是在对象池中,而常量池用来放字符串常量和基本类型的常量,所以对象池与常量池没有关系哦!
对象池在包装类的内容中:

而常量池是内存中的另一个空间

2、String类是final修饰了,被称为不可变字符串,所以这里String类型的值就是字符串常量!但是同学需要注意字符串是比较特殊的,并不是所有的类的值都有常量哦!
3、 String str="imooc" 是从字符串常量池中拿到“imooc”,然后把它赋值给str,这里是在实例化一个对象,因为这个String非常之常用。所以这里底层做了处理。使其可以像基本类型一样的被赋值。但它实际上是一个引用类型。这里是比较特殊的哦
1)字符串常量池,顾名思义,就像有一个大池子,里边有你常用的字符串。
比如:String str="imooc" ;就是从字符串常量池中,直接把常量池中的"imooc"赋值给str。(池子中还没有"imooc"的话,会先在池子中创建有一个"imooc",然后再赋值给 str。)
这时String str1 = "imooc" 它们指向的是同一个字符串。
2)虽然它类似于基本类型的赋值方法,是因为它非常常用,这里底层对它做了这个优化,并不是所有的类都有常量池哦!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星