什么是Java中的strcpy?
String s1, s2;
s1 = new String("hello");
s2 = s1; // This only copies s1 to s2.
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 13
这个说法:
s2 = s1;
Run Code Online (Sandbox Code Playgroud)
拷贝的价值s1成s2.该值只是一个参考,所以现在s1并s2指向同一个对象.因此,如果这是一个可变类型(例如StringBuilder,或ArrayList),那么你是正确的.
但是,String是不可改变的.您无法修改对象以更改其文本数据,因此只需复制引用即可.更改值s2以引用不同的字符串(或使其成为null引用)不会更改以下值s1:
String s1 = "hello";
String s2 = s1;
s1 = "Something else";
System.out.println(s2); // Prints hello
Run Code Online (Sandbox Code Playgroud)
如果你真的想要创建一个新String对象,你可以使用你已经(不必要地)使用的构造函数s1:
s2 = new String(s1);
Run Code Online (Sandbox Code Playgroud)
但是,这很少是一个好主意.
字符串是不可变的,所以你永远不需要复制它。(除非在极少数情况下)
例如
s1 = new String("hello");
Run Code Online (Sandbox Code Playgroud)
基本上是一样的
s1 = "hello";
Run Code Online (Sandbox Code Playgroud)
和
s2 = s1;
Run Code Online (Sandbox Code Playgroud)
基本上是一样的
s2 = "hello";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19873 次 |
| 最近记录: |