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);
ただし、それが良い考えであることはめったにありません。
文字列は不変であるため、コピーする必要はありません。(稀な場合を除く)
例えば
s1 = new String("hello");
基本的に同じです
s1 = "hello";
と
s2 = s1;
基本的に同じです
s2 = "hello";
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は同じ文字列ではなく文字列を出力します...しかし、オブジェクトに対してこれを行う間、あるオブジェクトで行われた変更は別のオブジェクトに影響します...オブジェクトのクローンが必要です..文字列に問題はありません
Javaの文字列オブジェクトは不変であるため、文字列コンストラクターは非常に簡単に仕事をします
String st="hello";
String st1=new String(st);
OUTPUT は st1 is hello になります
Nos2
は、新しく作成された文字列オブジェクトを とともに参照しs1
ます。