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 @   ycylikestuty  阅读(1354)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示