1。パラメーター転送方法
タイトルの問題を解決するには、最初にパラメーター通過方法を導入します。現在、さまざまなプログラミング言語に3つの主要なパラメーター転送方法があります。
1。値で渡します
2。参照で渡します
3。ポインターを通過します
値通過表現法(関数)は、パラメーターの値を変更せずに発信者が提供する変数のコピーを受信します。発信者が提供する変数の値は、参照によって渡されます。値(関数)の値は、ポインターによってポインターによってポインターによって受信されます。ポインターの値とアドレスを変更せずにポインターによって受信されますが、ポインターによって指し示されるアドレスを変更できます。
2。Javaパラメーター転送方法
残念ながら、Javaによって提供されるパラメーター通過方法は1つだけで、値によって渡されます。つまり、メソッドはすべてのパラメーター値のコピーを取得し、メソッドは渡されたパラメーター変数のコンテンツを変更できません。
Javaメソッドパラメータータイプは、次の2つのカテゴリに分類できます。
1。基本的なデータ型
2。オブジェクト参照
Java Developmentの経験がある友人は、基本的なデータ型については、Javaメソッドが変数の内容を変更できないことを知っています。カスタムクラスのオブジェクトを参照してコンテンツを変更することはできませんか?これは簡単な例で説明できます。コードは次のとおりです。
pubpcクラスmyclass {private object num; pubpc myclass(object num){this.num = num; } pubpcオブジェクトgetnum(){return num; } pubpc void setnum(object num){this.num = num; }} pubpc class main {pubpc static void change(myclass myclass){myclass.setnum(100); } pubpc static void main(string [] args){myclass a = new Myclass(10); System.out.println( "変更メソッドを呼び出す前の値は次のとおりです。"+a.getnum());変更(a); system.out.println( "変更方法を呼び出す後の値は次のとおりです。"+a.getnum()); }}上記のコード実行出力結果は次のとおりです。
結果から、変更方法がオブジェクトの状態を変更できることがわかります。言い換えれば、Javaメソッドはオブジェクトのパラメーター状態を変更できます。これは、Javaメソッドがカスタムデータ型(カスタムクラス)のパラメーターに参照パスを使用することを意味しますか?結果を確認するために、簡単な例を書くことができ、すべてのカスタムクラスはまだ上にMyClassです。コードは次のとおりです。
pubpc static void swap(myclass a、myclass b){myclass tmp = a; a = b; b = tmp; } pubpc static void main(string [] args){myclass a = new Myclass(10); myclass b = new Myclass(100); system.out.println( "スワップ前のaの値は次のとおりです。"+a.getnum()); System.out.println( "スワップ前のbの値は次のとおりです。"+b.getnum());スワップ(a、b); system.out.println( "a後のスワップの値は次のとおりです。"+a.getnum()); system.out.println( "交換後のbの値は次のとおりです。"+b.getnum()); }}実行結果は次のとおりです。
上記の結果から、Javaメソッドは、参照パスではなく、カスタムクラスのパラメーターパスに値の合格を使用していることがわかります。では、なぜJavaメソッドはオブジェクト状態を変更できるのですか?
変更方法を呼び出す特定の実行プロセスを検討して、回答を見つけることができます。
特定の実行プロセスは次のとおりです。
MyClassは、実際のパラメーターAを使用してコピーに初期化されます。これは、オブジェクトへの参照です。
SetNumメソッドは、このオブジェクトの参照に適用されます。 MyClassとAが参照されるMyClassオブジェクトの数は100に変更されます。
メソッドが終了した後、パラメーター変数MyClassは使用されなくなりました。また、下の図に示すように、numが100になるMyClassオブジェクトを指し続けています。
したがって、Javaメソッドがオブジェクトパラメーターの状態を変更できる理由は、メソッドがオブジェクト参照のコピーを取得し、メソッド内のオブジェクト参照およびその他のコピーが同時に同じオブジェクトを参照するためです。
次に、Javaメソッドパラメーターを要約しましょう。
メソッドは、基本データ型のパラメーターを変更できません。
メソッドは、オブジェクトパラメーターの状態を変更できます。
メソッドはオブジェクトパラメーターを作成することはできません。新しいオブジェクトを参照することができます(理由は、変更方法を呼び出すときに特定の実行プロセスを参照するためです)。
3。変数の数値を交換します
あなたはすでに理由を知っているので、理由を知ることは難しくありません。私の個人コードを直接投稿する:
pubpc static void swap(myclass a、myclass b){object tmp = a.getnum(); a.setnum(b.getnum()); b.setnum(tmp);}実行結果は次のとおりです。
交換は有効です。
参照:JavaコアテクノロジーボリュームI
Javaの上記の記事は、2つの変数の数値実装方法を交換します。すべてのコンテンツがあなたと共有されます。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。