原创

【每天十分钟JAVA快速入门】(九)参数传递

参数传递

一般我们谈到参数传递总是会提起所谓的形参、实参,或者是按值专递、按引用传递等。
Java中的参数都是按值传递的,方法得到的都是参数值的一个拷贝。总结如下:
方法不能修改基本类型的参数值,例如
public class Calculator {
public static void calculate(int x, int y){
x = x * y;
}
public static void main(String[] args) {
int x = 2;
int y = 3;
calculate(x,y);
System.out.println(x);
}
}
执行结果 x的值仍然为2。

方法可以改变一个对象参数的状态
public class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void changeName(String name) {
this.name = name;
}
public static void main(String[] args) {
Student student = new Student("Tom");
student.changeName("Jerry");
System.out.println(student.getName());
}
}
执行结果,Tom的名字改成了Jerry。

方法不能让对象参数引用另一个新的对象
public class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static void exchange(Student s1,Student s2) {
Student temp = s1;
s1 = s2;
s2 = temp;
}
public static void main(String[] args) {
Student tom = new Student("Tom");
Student jerry = new Student("Jerry");
exchange(tom,jerry);
System.out.println(tom.getName());
System.out.println(jerry.getName());
}
}
exchage方法试图将传入的两个对象参数进行交换,结果事与愿违,你大爷永远还是你大爷,Tom还是那个Tom,Jerry还是那个Jerry。事实上exange方法只是两个对象引用的拷贝进行的交换,而原来对象的引用依旧没变,从一个侧面证实了Java的参数都是按值传递的

正文到此结束