关于方法参数
1.程序设计语言的参数传递分为按值调用:方法接收的是调用者提供的值;
按引用调用 :方法接收的是调用者提供的变量地址
2. 值得注意的事情:java设计语言总是按值调用 ,也就是方法得到的是参数值得一个拷贝,方法不能修改
传递给它的任何参数变量的内容
3.常见情况:方法参数有两种类型 基本数据类型和对象引用
基本数据类型 : 方法调用将不会改变基本数据类型的参数
对象引用 : 方法调用会改变对象参数的状态 (原理:方法依然得到的是对象引用的拷贝,而这个对象引用的
拷贝值仍是对象引用,并与其所拷贝的模板对象引用指向同一个对象)
案例 :
public class Employee {
private String str ;
public Employee(String str){
this.str=str ;
}
public void getStr(){
System.out.println(str);
}
}
public class SwapWay {
public void swap(Employee x , Employee y){
Employee temp = x ;
x = y ;
y = temp ;
//x是a值得拷贝,y是b值得拷贝
System.out.println("方法参数x,y .......");
x.getStr();
y.getStr();
}
public static void main(String[] args) {
Employee a = new Employee("I am A .") ;
Employee b = new Employee("I am B .") ;
a.getStr();
b.getStr();
System.out.println("............");
new SwapWay().swap(a,b);
System.out.println(" 两个对象内部情况............");
a.getStr();
b.getStr();
}
}

结论:不难看出a , b 对象在交换方法执行后内部的数据并没有变化,但作为方法参数的x,y交换了
也就是说a , b 两个对象引用所指向对象地址并没有交换, x , y 的交换说明这里的方法参数拿到的
实际上是a , b 对象引用的拷贝值 。
也就意味着一个方法不能让对象参数引用一个新的对象
public void problemA(Employee a ,Employee b){
a = b ;
}
public static void main(String[] args) {
Employee a = new Employee("I am A .") ;
Employee b = new Employee("I am B .") ;
a.getStr();
System.out.println("............");
new SwapWay().problemA(a, b);
System.out.println(" 两个对象内部情况............");
a.getStr();
}

博客介绍了程序设计语言的参数传递方式,包括按值调用和按引用调用。指出Java总是按值调用,方法得到参数值的拷贝。还说明了方法参数的两种类型,基本数据类型和对象引用,通过案例展示了对象引用作为参数时的特点,即方法不能让对象参数引用新对象。

被折叠的 条评论
为什么被折叠?



