字符串[= new String vs =""]

use*_*619 0 java string

所以我的问题是关于声明和分配字符串.

我通常声明字符串的方式是执行以下操作:

String s1 = "Stackoverflow";
Run Code Online (Sandbox Code Playgroud)

然后,如果我需要更改s1的值,我会执行以下操作:

s1 = "new value";
Run Code Online (Sandbox Code Playgroud)

今天我找到了另一种方法,然后声明一个字符串就像:

String s2 = new String("Stackoverflow");
Run Code Online (Sandbox Code Playgroud)

然后更改值将是:

s2 = new String("new value");
Run Code Online (Sandbox Code Playgroud)

我的问题是两者之间有什么区别,还是只是优惠.从第四行查看代码

s2 = new String ("new value"); 
Run Code Online (Sandbox Code Playgroud)

我假设这样做会创建一个新的内存位置,然后s2指向它,所以我怀疑它会用于更改值,但我可以看到它在声明字符串时被使用.

Den*_*ret 6

来自javadoc:

初始化一个新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本.除非需要显式的原始副本,否则不必使用此构造函数,因为字符串是不可变的.

所以不,你没有理由不使用简单的文字.

简单地做

String s1 = "Stackoverflow";
Run Code Online (Sandbox Code Playgroud)

从历史上看,这个构造函数主要用于获取通过拆分较大的字符串获得的字符串的较轻副本(请参阅此问题).现在,使用它没有正常的理由.


归档时间:

查看次数:

282 次

最近记录:

11 年,7 月 前