Java的参数传递——形参和实参

问题起源

在写力扣的算法题https://leetcode.cn/problems/merge-sorted-array/时,需要传入一个int类型的数组为形参。在调用时,发现实参没有改变。故写下此博客。

理论知识

在Java中形参与实参对应两种类型:值类型与引用类型

  • 值类型:包括8种基本类型(byte、short、int、long、double、float、char、boolean)。为值类型时,形参方法内的参数值改变,不会影响到实参的值

这里要特殊考虑String,以及Integer、Double等几个基本类型包装类,它们都是immutable类型,因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待,可以认为是和基本数据类型相似,传值操作

  • 引用类型:数组、类、接口等类型。为引用类型时,形参方法内的参数值改变,会影响到实参的值

代码实践

传值调用

public class tetstest {
    public static void main(String[] args) {
        int[] a={1,2,5,8,10};
        tetstest c=new tetstest();
        c.setarray(a);
        for(int i:a){
            System.out.print(i);
        }
        System.out.println();
        int x=5;
        c.set(x);
        System.out.println(x);
    }
    public void setarray(int[] nums){
        int[] b={2,2,2,2,2};
        nums=b;
    }

    public void set(int a){
        int b=3;
        a=b;
    }
}

图片

传引用调用

import java.util.Date;
public class tetstest {
    public static void main(String[] args) {
        Date data=new Date();
        tetstest c=new tetstest();

        System.out.println(data);
        c.set(data);
        System.out.println(data);
    }

    public void set(Date date){
        date.setMonth(4);
    }
}

图片

参考博客

https://blog.csdn.net/MCJPAO/article/details/104072989

如有错误,欢迎指正

posted @ 2022-08-28 19:51  ycylikestuty  阅读(1346)  评论(0编辑  收藏  举报