值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中对参数的修改就不会对之前的值有影响。
引用传递:这里是将参数的引用地址传递到了函数中,这样对参数的修改就会影响到实际参数。
通俗一点讲就是:
值传递就是将值复制了一个,然后将复制那个传递到了函数中,相当于一个副本,对副本的修改,对原始值无影响。
引用传递也是将值复制了一次,但是这个值是引用,将对堆中地址的引用复制了一次传递到了函数中,原参数的引用和复制的引用都指向同一个地址,所以复制引用对内存中进行了修改,原引用中的数据也变了。
比较特别的就是包装类,他其实引用传递,但是,函数中对他的修改不会对原参数有影响。
通常基本类型就是值传递,因为基本类型是存放在栈中的,引用类型是放在堆中的,在栈中存放的引用地址,所以是引用传递。比较特别的就是包装类了外加一个 String类。