04 _ Javaのオブジェクト指向のデータ転送

(これは参照により渡されていない)は、Javaのポインタはなく、すべてのパラメータである方法値によって渡された値のコピーを渡します。

1.基本的なデータ転送タイプ

それに対応する仮パラメータ、実行パラメータ値の形式を変更する方法を渡すために、実際のパラメータ値は、実際のパラメータの値には影響を与えません。

[例]変数のスワップ値を

public class ObjectDemo {
	public static void main(String[] args) {
		int a = 10, b = 20;
		// 输出:交换之前:a:10 b: 20
		System.out.println("交换之前:a:" + a + " b: " + b);
		// 交换变量a和b的值
		swap(a, b);
		// 输出:交换之后:a:10 b: 20
		System.out.println("交换之后:a:" + a + " b: " + b);
	}
	// 交换两个变量的值
	public static void swap(int num1, int num2) {
		int temp = num1;
		num1 = num2;
		num2 = temp;
	}
}

要約:メソッド呼び出し、引数の値をパラメータにコピーされ、値ではなく、実際のパラメータデータ自体をコピーする共有機能に交換しました。したがって、パラメータの値を変更する内部メソッドは、メソッドの引数は一緒に変更外部パラメータに従わないであろう。

渡された前記参照データ型

その対応する仮パラメータ、実行パラメータの形を変化させる方法を渡す実際のパラメータ値は、直接実際のパラメータに影響を与えます。

[例]変数のスワップ値を

// 坐标类
class Point {
	// 成员变量
	double x;
	double y;
	// 构造方法
	public Point(double x, double y) {
		this.x = x;
		this.y = y;
	}
}
// 测试类
public class PointTest {
	public static void main(String[] args) {
		// 创建一个坐标对象
		Point point = new Point(10.0, 20.0);
		// 输出:交换之前:x: 10.0 y:20.0
		System.out.println("交换之前:x: " + point.x + " y:" + point.y);
		// 交换point中x和y的值
		swap(point);
		// 输出:交换之后:x: 20.0 y:10.0
		System.out.println("交换之后:x: " + point.x + " y:" + point.y);
	}
	// 交换坐标对象中x和y的值
	public static void swap(Point point) {
		double temp = point.x;
		point.x = point.y;
		point.y = temp;
	}
}

メソッドコールが、引数が対応するプロセスパラメータに格納されたアドレスに渡され、パラメータ引数は、したがって実行の過程で、同じスタックのアドレスを指し、パラメータの操作は、引数で実際に操作。したがって、パラメータフォームを動作させる方法は、外部のプロセスは、引数を指定して変化します。

PS:最新の無料のマニュアルと教育ビデオの場合は、QQグループ(627407545)を追加してください受けます。

公開された33元の記事 ウォンの賞賛0 ビュー307

おすすめ

転載: blog.csdn.net/zhoujunfeng121/article/details/104581589