为了账号安全,请及时绑定邮箱和手机立即绑定

String s = “123”;这个语句有几个对象产生

String s = “123”;这个语句有几个对象产生

android也疯狂 2018-02-12 10:22:39
查看完整描述

1 回答

?
Zhuliuer

TA贡献10条经验 获得超15个赞

类似于你题目中的形式定义一个字符串,java语言中有一个常量池,如果在你的代码的其它地方已经定义过这么这个'123'的变量,在定义string s='123'的时候,直接把s指向常量池中的字符串123,就不会新生成一个字符串123,但假如没有的话,就会新生成一个字符串123,指向s,并放入常量池!
我觉得你不需要去关注有几个对象问题,你可以了解一下字符串常量池的概念!看看是什么原理。

查看完整回答
1 反对 回复 2018-02-12
?
慕沐9307871

TA贡献27条经验 获得超9个赞

一个对象(常量池里的),需要搞清楚的是你这句代码和

String s = new String("123");

有区别的,我这句两个对象(一个堆中的对象,一个常量池里的对象)。

这类问题需要理清常量池的规律,其他迎刃而解。

查看完整回答
反对 回复 2018-02-13
?
楠宝宝_

TA贡献46条经验 获得超18个赞

我觉得其实现在已经没必要去纠结这种new对象的内存问题了,就比如我问你

String temp = "a" +"b"+"c"+"d";这句话有多少对象产生?你不管说几个,3,4个都不一定对的,因为要看编译器的,一些编译器是会自动变成String temp = "abcd";

查看完整回答
反对 回复 2018-02-12
?
D明日边缘

TA贡献13条经验 获得超28个赞

String s = new String(〃123〃);
一个对象

查看完整回答
反对 回复 2018-02-12
  • 1 回答
  • 0 关注
  • 4968 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信