ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 按值调用还是引用调用

2022-05-07 11:33:41  阅读:135  来源: 互联网

标签:调用 Java 按值 int void static user public 引用


按值调用指方法接收调用者提供的值,
按引用调用指方法接收调用者提供的变量地址。

Java的参数传递,不管是基本数据类型还是引用类型的参数,都是按值传递,没有按引用传递!

Java 总是按值调用,方法得到的是所有参数值的副本,传递对象时实际上方法接收的是对象引用的副本。

  • 方法不能修改基本数据类型的参数,
    如果传递了一个 int 值 ,改变值不会影响实参,因为改变的是值的一个副本。

  • 可以改变对象参数的状态,但不能让对象参数引用一个新的对象。因为他传入的是地址的副本
    也就是传递的对象,重新让他指向一个新对象是不会改变原本的实参的,只有直接修改那个对象的内容才会改变
    如果传递了一个 int 数组,改变数组的内容会影响实参,而改变这个参数的引用并不会让实参引用新的数组对象。

Java的参数传递是「按值传递」还是「按引用传递」?

public class Test {
    public static void main(String[] args) {
        int[] a = {1,2,3};
        update4(a);
        for (int i : a){
            System.out.print(i);
        }

        User user = new User("张三");
        up2(user);
        System.out.println(user.getName());
    }

    public static void up(User user){
        user = new User("李四"); // 还是张三
    }

    public static void up2(User user){
        user.setName("李四");  // 改变成李四
    }

    public static void update(int[] a){
        int[] b = {3,4,5};
        a = b; // 不变
    }

    public static void update2(int[] a){
        a = new int[]{3, 4, 5};  // 不变
    }

    public static void update3(int[] a){
        int k = 0;
        for (int i : a){
            i = 3 + k;  // 不变
            k++;
        }
    }

    public static void update4(int[] a){
        a[0] = 9;  // 内容改变
    }
}

标签:调用,Java,按值,int,void,static,user,public,引用
来源: https://www.cnblogs.com/javaupup/p/16241717.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有