javaの値伝達、アドレス伝達、参照伝達について詳細に説明する。
javaの値伝達、アドレス伝達、参照伝達について詳細に説明する。
ずっと来て、価値の伝達と住所の伝達に対してよく知っていると感じています。さっきソース中国でJavaの中の価値伝達と住所伝達を紹介しました。次にまとめて、分かりやすくします。
以前の理解によれば、javaでは基本的なデータタイプは値伝達であり、対象はアドレス(参照)伝達である。みんなに例を見せます。
実はjavaはもともと値伝達で、c++のような指針伝達がなく、段階的に上のコードを分析しています。
1、name=「123」
2、SChangeを呼び出す strとnameは共に「123」を指します。
3、strは値を再割り当てし、「234」を指す。
4、nameの指し方は変わらないですか?それとも「123」ですか?
次は別のコードを見ます。
1、name=「123」
2、SChangeを呼び出す strとnameは共に「123」を指します。
3、対象の値を変更する「123」+「234」
4、引用は変わっていません。ただ値が変わっただけです。結果は123234です。
分からなかったらメッセージをください。自分でよく分析してください。一つの言葉を覚えてください。javaは価値伝達だけです。
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。
ずっと来て、価値の伝達と住所の伝達に対してよく知っていると感じています。さっきソース中国でJavaの中の価値伝達と住所伝達を紹介しました。次にまとめて、分かりやすくします。
以前の理解によれば、javaでは基本的なデータタイプは値伝達であり、対象はアドレス(参照)伝達である。みんなに例を見せます。
public class ObjectTrans {
public static void main(String[] args) {
String name = "123";
SChange(name);
System.out.println(name);
}
public static void SChange (String str) {
str = "234";
}
}
この例の出力は123ですか?それとも234ですか?結果は123です。why一つの言葉は、対象も値伝達であり、この対象の引用をcopyとしただけです。実はjavaはもともと値伝達で、c++のような指針伝達がなく、段階的に上のコードを分析しています。
1、name=「123」
2、SChangeを呼び出す strとnameは共に「123」を指します。
3、strは値を再割り当てし、「234」を指す。
4、nameの指し方は変わらないですか?それとも「123」ですか?
次は別のコードを見ます。
public class ObjectTrans {
public static void main(String[] args) {
StringBuilder name = new StringBuilder("123");
SChange(name);
System.out.println(name);
}
public static void SChange (StringBuilder str) {
//str = "234";
str.append("234");
}
}
このコードの出力の結果は何ですか?答えは123234、why?同じステップの分析:1、name=「123」
2、SChangeを呼び出す strとnameは共に「123」を指します。
3、対象の値を変更する「123」+「234」
4、引用は変わっていません。ただ値が変わっただけです。結果は123234です。
分からなかったらメッセージをください。自分でよく分析してください。一つの言葉を覚えてください。javaは価値伝達だけです。
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。