Java基础【二】 - 值传递和引用传递

什么是值传递

在方法的调用过程当中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样若是在函数中对该值(形参的值)进行了操做将不会影响实参的值。由于是直接复制,因此这种方式在传递大量数据时,运行效率会特别低下。函数

什么是引用传递

引用传递弥补了值传递的不足,若是传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将实参的地址复制一份传递到函数中。形参和实参的地址相同,指向同一块内存地址,也就是说操做的其实都是源数据,因此若是在函数中对该值(形参的值)进行了操做将会影响实参的值。(注意:这里所说的是改变源数据的内容,如:改变的对象的属性)spa

实例

public static void main(String[] args) {
    int str = 1;    
    char[] ch = {'a', 'b'};
    change(str, ch);
    System.out.println(str);    //输出:1
    System.out.println(ch);    //输出:cd
}    
    
public static void change(int str, char[] ch) {        
    str = 2;
    ch[0] = 'c';    //改变数据源内容
}

值传递和引用传递过程分析图

  1. 为对象分配内存空间

图片描述

  1. 执行 change() 方法。执行前实参(黑色)和形参(红色)指引。

图片描述

  1. 执行后

图片描述

怎么改变值传递的实参

能够利用反射改变实参的值,后面会写反射相关的文章。code

若是内容对你有帮助但愿点赞收藏谢谢!!!对象

相关文章
相关标签/搜索