JAVA基础 | Java中的值传递与引用传递(210103)
Part 1 值的传递
在方法调用时,实际参数把它的值传给对应的形式参数,方法执行中的形式参数的值得改变不影响实际参数的值 。(包括String类型的传递)
package Chap4;
//Java中值的传递
class A{
public void changeNum(int i,int j) {
int temp=i;
i=j;
j=temp;
}
public void changString(String a) {
String s=" Java!";
a=a+s;
}
}
public class Chap4a {
public static void main(String[] args) {
A x=new A();
int a=3,b=4;
x.changeNum(a, b);
System.out.println("调用前:");
System.out.println("a="+a+" "+"b="+b);
System.out.println("调用后:");
System.out.println("a="+a+" "+"b="+b);
String s="Hello";
x.changString(s);
System.out.println("调用前:");
System.out.println("s"+s);
System.out.println("调用后:");
System.out.println("s"+s);
}
}
//运行结果为3 4 3 4 Hello Hello
Part 2 引用的传递
在方法调用时,实际参数的引用被传递给方法中对应的形式参数。在方法执行中对形式参数的操作实际上就是对实际参数的操作。方法执行中形式参数的改变将影响实际参数的数值。
package Chap4;
//Java中的引用传递
class B{
public int i=0;
public B() {}
}
public class Chap4b {
public void changeOne(B a) {
a.i++;
}
public void changTwo(int num[]) {
for(int i=0;i<=num.length-1;i++) num[i]++;
}
public static void main(String args[]) {
B a=new B();
Chap4b test=new Chap4b();
test.changeOne(a);
System.out.println("a.i="+a.i);
int num[]= {1,2,3};
test.changTwo(num);
for(int i:num) System.out.print(i+" ");
}
}
//运行结果为:
//a.i=1
//2 3 4