Java 参照呼び出し

王林
リリース: 2024-08-30 15:34:06
オリジナル
774 人が閲覧しました

Java での参照による呼び出しの定義では、パラメーターを参照として使用することが推測されます。引数の参照を、これを使用する関数にパラメータとして送信します。両方の引数を実パラメータと仮パラメータとして出荷します。これらは正確な場所を指します。つまり、特定の関数に変更が加えられると、その変更はプロセスの呼び出し時に実際のパラメータに反映されます。明示的に指定したり呼び出したりする必要はありません。変数のアドレスが送信されます。これは、これらの実際の変数が関数を呼び出していることを意味します。

広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文

以下は、Java で参照による呼び出しを実装できる方法です。

void function_name(datatype1, datatype2); //Function declaration
int main()
{
Datatype declaration;
Function Call(datatype1, datatype2);
}
Function_name ()
{
// Function definition
}
ログイン後にコピー

説明: 上記の構文は、最初に関数を宣言しています。 C とは異なり、Java には、特定のアドレスで変数を取得するための特別な規定はありません。 Java は参照変数も渡す値による呼び出しを使用します。

Java での参照による呼び出しはどのように機能しますか?

参照による呼び出しの基本的な機能は、変数のアドレスを参照することです。したがって、変数のアドレスに変更がある場合、それを使用する関数が呼び出される場所に反映されます。以下のコードは、この機能をより深く理解するのに役立ちます。

コード:

Void inc(int );
Public static voidmain(string args[]) {
int a = 10;
System.out.println("Before function was called the Value of a = ", a);
void inc();
System.out.println("After function is called Value of a = ", a);
}
Void inc(intx) {
int x = x + 1;
}
ログイン後にコピー

ここでは変数を使用して関数 inc を宣言しています。その後、変数を宣言しました。変数は定義された値を受け取ります。ただし、先に進むと、「inc」関数と呼ばれます。関数「inc」が呼び出され、呼び出されるたびに変数「a」の場所を指します。参照変数のコピーが作成され、値が存在すると、それらの値が使用されるメソッドに渡されます。この参照は変数「a」のアドレスを指します。この値をインクリメントし、関数が呼び出されるときにこのアドレスから値を取得します。この場合、inc 関数は値を 1 ずつ増やしているため、11 になります。値はメインに出力されます。参照変数のコピーを作成することもできます。新しいオブジェクトまたは変数が参照用に作成された場合、プライマリ アドレスは同じままであるため影響を受けません。

Java 参照呼び出しの実装例

これについてさらにいくつかの例を確認すると、理解を深めることができます。

例 #1

参照による呼び出しを使用した Java での番号の交換。以下のコードは、参照による呼び出しを使用して 2 つの番号を交換できる例です。

コード:

public class EduByReference {
public static void main(String[] args) {
int num1 = 55;
int num2 = 85;
System.out.println("The values before swapping are: number1 = " + num1 + " and number2 = " + num2);
// Calling the function to swap
swapByReference(num1, num2);
System.out.println("\nThe numbers before and after swapping will be same in main:");
System.out.println("Once the swapping is done, the values will be back to original: num1 = " + num1 + " and num2 is " + num2);
}
public static void swapByReference(int num1, int num2) {
System.out.println("Before swapping in function locally, num1 = " + num1 + " num2 = " + num2);
// Swapping number1 and number2
int temp = num1;
num1 = num2;
num2 = temp;
System.out.println("After swapping in function locally, num1 = " + num1 + " num2 = " + num2);
}
}
ログイン後にコピー

出力:

Java 参照呼び出し

説明: 上記のプログラムは 2 つの数値を交換しています。値がそれぞれ 55 と 85 である 2 つの整数変数 a と b を取得しました。次に、関数 swapByReference(a, b) を呼び出します。この関数では、メインから送信されたこれらの変数を取得します。この関数は a と b の値を取得し、これら 2 つの変数の値を交換します。交換には、別の変数「c」を使用しました。これが完了すると、この関数は 85 と 55 の値を返します。主要な値は以前と同じままであることがわかります。これは参照渡しの使用です。関数を呼び出すと元の値がそのまま保存され、関数ごとに値が変更されます。元の値はそのまま残ります。上記の関数の出力は以下のようになります。

関数による作業が完了すると、変数のアドレスにより元の値が保持されることがわかります。変数の位置は変更されませんでした。

例 #2

Java で参照による呼び出しを使用して 2 つの数値を加算する:

コード:

public class EduAddByReference{
int d=50;
public void add(int d){
d=d+100;//These changes will happen locally, that means it will be reflected only in this function
System.out.println("The value in function after performing addition is " + d);
}
public static void main(String args[]){
EduAddByReference edad=new EduAddByReference();
System.out.println("before change "+edad.d);
edad.add(500);
System.out.println("after change "+edad.d);
}
}
ログイン後にコピー

出力:

Java 参照呼び出し

説明: 上記のプログラムは、Java の call-by 参照の別の例です。ここではメインで、関数 EduAddByReference() を呼び出しています。この関数はメインから数値を取得して加算します。このエディションは関数で印刷されています。変数のこの値は、この関数に対してローカルのままです。関数の制御がメインに移ると、元の値を持つ変数が再度出力されます。以下の出力を確認してください。これは、このプログラムの動作を改善するのに役立ちます。

結論

Java の参照による呼び出しは、関数を呼び出し、オペランドまたは変数のアドレスを使用してデータをチェックします。値はローカルで変更され、関数のスコープまでのみ永続的になります。参照による呼び出しは、元の値をそのまま保持し、必要に応じていつでも変更するのに役立ちます。これは、変数にローカルで何らかの操作を実行させたい場合にいつでも使用できます。変数の独自性が保持されます。

以上がJava 参照呼び出しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート