(これは参照により渡されていない)は、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)を追加してください受けます。