1 回答
Zhuliuer
TA贡献10条经验 获得超15个赞
类似于你题目中的形式定义一个字符串,java语言中有一个常量池,如果在你的代码的其它地方已经定义过这么这个'123'的变量,在定义string s='123'的时候,直接把s指向常量池中的字符串123,就不会新生成一个字符串123,但假如没有的话,就会新生成一个字符串123,指向s,并放入常量池!
我觉得你不需要去关注有几个对象问题,你可以了解一下字符串常量池的概念!看看是什么原理。
慕沐9307871
TA贡献27条经验 获得超9个赞
一个对象(常量池里的),需要搞清楚的是你这句代码和
String s = new String("123");
有区别的,我这句两个对象(一个堆中的对象,一个常量池里的对象)。
这类问题需要理清常量池的规律,其他迎刃而解。
楠宝宝_
TA贡献46条经验 获得超18个赞
我觉得其实现在已经没必要去纠结这种new对象的内存问题了,就比如我问你
String temp = "a" +"b"+"c"+"d";这句话有多少对象产生?你不管说几个,3,4个都不一定对的,因为要看编译器的,一些编译器是会自动变成String temp = "abcd";
添加回答
举报
0/150
提交
取消