Java中的strcpy是什么?
String s1, s2;
s1 = new String("hello");
s2 = s1; // This only copies s1 to s2.
Java中的strcpy是什么?
String s1, s2;
s1 = new String("hello");
s2 = s1; // This only copies s1 to s2.
这个说法:
s2 = s1;
将 的值复制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
如果你真的想创建一个新String
对象,你可以使用你已经(不必要地)使用的构造函数 for s1
:
s2 = new String(s1);
然而,这很少是一个好主意。
String 是不可变的,因此您永远不需要复制它。(极少数情况除外)
例如
s1 = new String("hello");
基本上是一样的
s1 = "hello";
和
s2 = s1;
基本上是一样的
s2 = "hello";
Nos2
将与 . 一起引用新创建的字符串对象s1
。
String s1, s2;
s1 = new String("hello");
s2 = s1; // This only copies s1 to s2. Am I right?
s1="adsfsdaf";
System.out.println(s2);
System.out.println(s1);
你是对的 s1 和 s2 打印的字符串不是同一个字符串...但是在对对象执行此操作时,一个对象中所做的更改会影响另一个对象...需要克隆对象..字符串没有问题
String Constructor 很容易完成这项工作,因为 java 中的字符串对象是不可变的
String st="hello";
String st1=new String(st);
输出将是 st1 是你好