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); //nullDemo05.change(person);System.out.println(person.name); //李庆博}public static void change(Person person){ //这里并不是一个形式参数了,而是实例化的Person,是具体类//person是一个对象,他指向的是 Person person = new Person();一个具体的人,可以改变属性person.name = "李";}}//定义了一个Person类,有一个属性:nameclass Person{String name;}
该帮助案例取自狂神说Java。
如果觉得《值传递与引用传递案例对比》对你有帮助,请点赞、收藏,并留下你的观点哦!