龙空技术网

java的值传递和引用传递

王朋code 64

前言:

此刻咱们对“java引用传值”大致比较关心,你们都需要知道一些“java引用传值”的相关内容。那么小编在网上收集了一些关于“java引用传值””的相关资讯,希望各位老铁们能喜欢,朋友们一起来学习一下吧!

先看一个例子

//定义一个对象public class Student {    String name;}//测试类public class TestClass {    public static void main(String[] args) {        Student stu1;        stu1 = new Student();        stu1.name = "小明";        int a = 10;        System.out.println("改变前,stu1名字为" + stu1.name);        System.out.println("改变前,a的值为" + a);        TestClass myTest = new TestClass();        myTest.change(a, stu1);        System.out.println("改变后,stu1名字为" + stu1.name);        System.out.println("改变后,a的值为" + a);        }    void change(int num, Student student) {        num = num + 10;        student.name = "小强";}}运行结果为:改变前,stu1名字为小明改变前,a的值为10改变后,stu1名字为小强改变后,a的值为10

这个怎么理解呢?

对于基本数据类型,我们向change方法传参数时,传的是基本数据类型的值,也就是将10这个值传递到了change方法中,对于change方法,传入的参数相当于:int num=10,这时方法内部对num变量进行增加,并不影响到方法外部的a的值。

对于引用数据类型,我们向change方法传入参数时,传的是new Student()这个对象在堆中的地址,我们将地址值传递到change方法中,对于change方法,传入的参数相当于:Student student=地址值,这时候对对象进行操作,相当于还是对方法外部的对象进行操作,因为传的是地址,这个地址指向的就是外部的new Student()

但对于String这个类来说,如果传一个string的对象,方法内部对对象进行赋值,比如:s="aaa",这个aaa相当于一个新的string对象,对于传入方法的string引用地址,相当于s指向了一个新的"aaa"的引用地址,所以外部的字符串引用并不会改变

标签: #java引用传值 #java中引用是什么意思