Java中字符串创建的时间

Alb*_*ore 8 java string

我正在为J2ME设备编写一个应用程序,并且非常关心不必要的字符串创建.由于使用Strings是内置的,即没有必要明确地创建它们,我不确定我是否理解它.

例如,返回一个String(只是使用双引号)在返回时创建字符串,即如果我有几个返回语句返回不同的字符串,则只会创建一个字符串.是对的吗?

此外,当使用字符串打印带有异常的消息时,如果不抛出异常,这些字符串永远不会被创建,对吧?

抱歉打扰你这样一个新手问题.

Jon*_*eet 4

我完全不确定您到目前为止收到的答案。如果您只是返回字符串文字,例如

return "foo";
Run Code Online (Sandbox Code Playgroud)

然后这些值被嵌入到类文件中。JVM 确保只创建该字符串的一个实例(从字面上) - 但我不认为在加载类本身时它不会为类中的所有常量创建字符串。

话又说回来,因为字符串只会创建一次(每个字符串常量),所以不太可能成为问题。

现在,如果您的代码实际上更像这样:

return "foo" + new Date();
Run Code Online (Sandbox Code Playgroud)

那么这就是动态创建一个字符串 - 但只有在实际命中 return 语句时才会创建它。