Java 程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的
一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
Java 程序设计语言总是采用按值调用,也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容。
案例一:一个方法不能修改一个基本数据类型的参数(数值型或者布尔型)
package com.jj.demo;
import org.junit.Test;
/**
* @author fjj
* @date 2021/3/18 18:58
*/
public class Demo {
//用来验证 值传递的方法
public void swap(int a,int b){
int c=a;
a=b;
b=c;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
@Test
public void demo1(){
int A=10;
int B=15;
swap(A,B);
System.out.println("A = " + A);
System.out.println("B = " + B);
}
}
结果
a = 15
b = 10
A = 10
B = 15
解析:
这里在方法中只是swap 的方法中的a b 值进行了改变,交换,而没有改变A ,B 的值。相当于a b 是A B 的副本,不会影响到原来的值。
验证了一个方法不能修改一个基本数据类型的参数。
案例二:一个方法可以改变一个对象参数的状态
public void change(int [] array){
//把数组的第一个变成 0
array [0]=0;
}
@Test
public void demo2(){
int arr[]={1,2,3,4,5};
System.out.println(arr[0]);
change(arr);
System.out.println("arr = " + arr[0]);
}
}
结果
1
arr = 0
array 被初始化arr 的拷贝也就是一个对象的引用,也就是说array 和arr 指向的是同一个数组对象,因此,外部对引用对象的改变会反映到所对应的对象上
验证了一个方法可以改变一个对象参数的状态
案例三 :一个方法不能让对象参数引用一个新的对象
@Test
public void demo3(){
Person person = new Person("娇娇");
Person person1 = new Person("愉涵");
swap1(person,person1);
System.out.println(person.getName());
System.out.println(person1.getName());
}
public void swap1(Person a,Person b){
Person c=a;
a=b;
b=c;
System.out.println("a = " + a.getName());
System.out.println("b = " + b.getName());
}
结果
a = 愉涵
b = 娇娇
娇娇
愉涵
方法并没有改变 person ,person1 中的对象引用,只是swap1 方法的参数X 和y 被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷贝。
总结
一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
一个方法可以改变一个对象参数的状态。
一个方法不能让对象参数引用一个新的对象。