Javaが値渡しで、一般的なスワップ関数が2つの値を入れ替えることはありません。私は、プリミティブ型の値を入れ替えることは不可能だとも読んでいます。私はなぜ次のプログラムが動作し、スワップ後に異なる金額を表示するのだろうと思っていますか?プログラムでJavaのスワップ関数を理解する
public class swapMe {
public static void main(String[] args) {
int x = 10 , y = 20;
System.out.println("Before");
System.out.println("First number = " + x);
System.out.println("Second number = " + y);
int temp = x;
x = y;
y = temp;
System.out.println("After");
System.out.println("First number = " + x);
System.out.println("Second number = " + y);
}
}
が、それはどこか似ているが、x = 10
とy = 20
の元の値は、まだどこかに保存され、表示されたスワップ値が正しくありませんか?お知らせ下さい。ありがとう
(手のひらを顔に当てる!)あなたは***理論を交換しません***スワップ機能をチェックするために、任意の方法にそれらの値を渡しています? –
'int temp = x;の後に' temp'に格納された 'x'の値が実行されます。等々。彼らは "どこか"ではなく、コンパイラに自分がどこにあるべきかを正確に伝えました。 –
リテラル**スワップ**と変数間の値の交換との違いを理解する必要があります。さらに、 "* Javaが値渡し*ということをオンラインで読んだので、あなたの例の中のどのメソッドにも変数を渡すことはできませんでした。 – Fureeish