String java 6调用字符串实习生方法在应用程序启动时是个好主意?

String java 6调用字符串实习生方法在应用程序启动时是个好主意?,string,java-6,lang,String,Java 6,Lang,打电话是个好主意: "".intern(); 在启动时的企业应用程序中(一次,就像在第一个servlet初始化中一样?),那么所有具有空字符串值的后续字符串都是相同的引用 更进一步说,我们知道在这个应用程序中会大量使用50-80个字符串(从数据库或资源文件加载-我们知道只有少数字符串可以自定义,但一旦为安装自定义,就很少更改)来调用intern会有显著的收益吗?将空字符串(或任何其他字符串)插入intern不保证后续实例将使用相同的对象,除非您也对它们进行了实习 合同规定,如果两个字符串都是

打电话是个好主意:

 "".intern();
在启动时的企业应用程序中(一次,就像在第一个servlet初始化中一样?),那么所有具有空字符串值的后续字符串都是相同的引用


更进一步说,我们知道在这个应用程序中会大量使用50-80个字符串(从数据库或资源文件加载-我们知道只有少数字符串可以自定义,但一旦为安装自定义,就很少更改)来调用intern会有显著的收益吗?

将空字符串(或任何其他字符串)插入intern不保证后续实例将使用相同的对象,除非您也对它们进行了实习

合同规定,如果两个字符串都是
equals()
,并且都已插入,则它们引用相同的对象(因此是
==


除了实习有成本外,每个
intern()
都意味着要在池中搜索。

不似乎不是个好主意。它不是这样工作的。看见

特别是@GlenBest对这个答案的评论:


简而言之,你什么也得不到,因为你的源代码中的常量字符串是以任何方式插入的,你需要在程序执行过程中插入任何出于任何原因而需要插入的动态字符串。

为什么不使用
string.Empty
?你的输入是哪个包?还是java 7?Java6找不到String.Empty*其他常用的字符串呢?调用intern是一种实践吗@jeroen vannevelString常量已经被插入,所以你至少不需要调用
intern()
。只需将字符串定义为常量(公共静态最终字符串…)应该会更容易。有些字符串来自数据库-用户可以更改,但一个特定的表不会更改太多的字符串,这两个答案都很有用。现在我明白了,我只需要返回相同的字符串对象,我们现在正在执行。