JAVA值传递还是引用传递?

结论:java是值传递,只是,

    对于基本数据类型,传递的是基本类型的量值的拷贝 对于引用类型,传递的是该引用所指向的对象在内存中的地址值的拷贝

实参和形参

public static void test(String s){
          
   
        System.out.println(s);
    }
    public static void main(String[] args) {
          
   
        test("sofia");
    }

代码块中 s 是形参,main方法中的“sofia”是实参,即

    实参:函数在调用其他函数时,在被调函数后面的括号中的参数为实参 形参:在定义函数时使用的参数

值传递和引用传递

    值传递: 在调用函数的时候,将实参复制一份之后传递到函数中,在函数中对参数修改,不会修改到实参 引用传递:在调用函数的时候,将实参的地址传到函数中,函数中的修改会改变实参 总而言之,是否是值传递,关键在于是否会创建副本(不论是对基本数据类型中的变量创建副本,还是对引用类型中对象的地址创建副本),只要创建了副本就是 值传递

例如

int a = 1;
a = 2
System.out.println(a);  //  2
String str = "xiao";
str = "sofia";
System.out.println(str);  //  xue
    对于基本数据类型而言,变量值就保存在变量中 赋值符号“=”,会直接改变基本数据类型的变量a的值由1变为2 赋值符号“=”,会改变引用类型指向内存中的地址(一开始str的值是对象“xiao”在内存中的地址,赋值后str的值是“sofia”在内存中地址并将“xiao”在内存中的地址覆盖掉,但对象“xiao”的值并未发生改变,且未被引用,而没有任何引用的 “xiao”则成为了垃圾,会被垃圾回收机制回收)
经验分享 程序员 微信小程序 职场和发展