Java传递值

128 阅读1分钟

java传递值

基本类型及其包装类型

Java 的8中基本数据类型 byte, short, int, long, float, boolean, char, double及其包装类型都是值传递。

值传递是什么意思呢?

private void test1(){
    int i = 10;
    test2(i);
    system.out.println("current test t1.i =" + i);
}

private void test2(int p){
    int p = 20;
     system.out.println("current test t2.p =" + p);
}

控制台打印出来的结果是

current test t2.p = 20

current test t1.i = 10

可以看到test1里面i的值没有发生改变,哪怕调用了test2也只是传递了值,但是test1里面的值是没有改变的。


非基本类型

非基本类型是引用传递,也就是改变了内存里面的引用值。

如果我们把上面代码中的int 改程对象,比如类User user;然后我们可以给其赋值,你会发现随着调用t2,t1的值也会发生发生改变


特殊案例String

String 其实也是非基本类型,但是它表面上看起来确实传递参数。其实String类型传的是引用,只不过被重新赋值指向了别的对象了,没有修改原对象。即,String本质上还是引用传递,表像上是值传递。