java本身是值传递类型,值传递则是传递相应的值,比如一个方法,只是将值传递给了形式参数,若返回值为空,则最终输出值是不变;而引用传递则是传递的一个对象,其本质还是值传递,但是中间会有一个对象。我们可以通过案例来加深了解
值传递
由案例运行可以知道,输出的数值都是1,来分析其中的逻辑:第一个肯定是没有问题的 输出就是1重点是第二个,走过change方法后,只是把实际定义的int a = 1传递给了方法中的形式参数a,并没有返回一个参数,返回值为空。只是把a = 1传递给了a,然后方法走完一边后最后还是要回到主方法。
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);
Demo04.change(a);
System.out.println(a);
//可知两者都是1
}
public static void change(int a){
a = 10;
}
引用传递
由案例运行可以知道,输出的数值为null和李,分析其中的逻辑:前者没有问题,后者则是我们将person这样当前这个人传递给了change方法,而change方法改变的则是person.name这个值,最后修改的则是Person类里面的属性name,所以person.name一定可以修改成功的。
public class Demo05 {
public static void main(String[] args) {
//要使用这个类,需要定义类,实例化
Person person = new Person();
System.out.println(person.name); //null
Demo05.change(person);
System.out.println(person.name); //李庆博
}
public static void change(Person person){ //这里并不是一个形式参数了,而是实例化的Person,是具体类
//person是一个对象,他指向的是 Person person = new Person();一个具体的人,可以改变属性
person.name = "李";
}
}
//定义了一个Person类,有一个属性:name
class Person{
String name;
}
该帮助案例取自狂神说Java。