【发布时间】:2019-01-03 08:13:50
【问题描述】:
-
说如果String常量池中没有字符串,如果我说,
String s = "Java";那么会创建多少个对象呢?
-
现在游泳池里什么也没有,我说,
String s = new String("Java");现在,将创建多少个对象?
-
现在游泳池里什么也没有,我说,
String s = new String("Java"); s.intern();实习生方法会做什么?
-
现在游泳池里什么也没有,我说,
String s = new String("Java"); String s1 = s.intern();现在会发生什么?
请回答,因为我真的很困惑。
正如我在 SCJP5 Kathy Sierra 书中所读到的,当您使用 new 创建一个 String 时,会创建 2 个对象,一个在堆上,一个在池中。
【问题讨论】:
-
在 Java 的正常使用中,你几乎不应该关心字符串实习,你的代码也不应该包含
String.intern()(与所有规则一样,有例外,但除非你有一个非常好的理由)。不要沉迷于这样的事情,在学习 Java 编程时,它真的不重要。 -
同意。不幸的是,SCJP 考试会问一些愚蠢的问题,需要这样的知识。更不幸的是,这些问题经常以模棱两可的方式提出......因此没有一个正确的答案。
-
@MarkRotteveel,我想重新提出这个问题,因为它比固定的问题更详细,更实用,你不这么认为吗?
-
@AndrewTobilko - 我认为它应该保持关闭。不需要更多的答案。严重地。是的,细节不同,是的回答对OP很有用,但信息都在原始问答中。 (可以说,这只是原作的插图。)
-
@AndrewTobilko 我选择的副本提出了同样的问题,它只是在没有将其分解为单独步骤的情况下完成了它。那里的答案也充分解释了它。我认为没有充分的理由重新开放。
标签: java string string-interning string-pool