一、形参&实参
实参:实际传递给方法的参数
形参:用于定义方法,接收实参,不需要有确定的值
二、值传递&引用传递
值传递:方法接受的是实参值的拷贝,会创建副本
引用传递:方法接收的是实参所引用对象在堆中的地址,不会创建副本,对形参的修改将影响到形参
Java只有值传递
1 2 3 4 5 6 7 8 9 10 11 | public static void main(String[] args) { int [] arr = { 1 , 2 , 3 , 4 , 5 }; System.out.println(arr[ 0 ]); change(arr); System.out.println(arr[ 0 ]); } public static void change( int [] array) { // 将数组的第一个元素变为0 array[ 0 ] = 0 ; } |
输出:
1
0
这里传递的还是值,不过,这个值是实参的地址罢了!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Person { private String name; // 省略构造函数、Getter&Setter方法 } public static void main(String[] args) { Person xiaoZhang = new Person( "小张" ); Person xiaoLi = new Person( "小李" ); swap(xiaoZhang, xiaoLi); System.out.println( "xiaoZhang:" + xiaoZhang.getName()); System.out.println( "xiaoLi:" + xiaoLi.getName()); } public static void swap(Person person1, Person person2) { Person temp = person1; person1 = person2; person2 = temp; System.out.println( "person1:" + person1.getName()); System.out.println( "person2:" + person2.getName()); } |
输出:
person1:小李
person2:小张
xiaoZhang:小张
xiaoLi:小李
两个引用类型的形参互换并没有影响实参:
swap
方法的参数 person1
和 person2
只是拷贝的实参 xiaoZhang
和 xiaoLi
的地址。因此, person1
和 person2
的互换只是拷贝的两个地址的互换罢了,并不会影响到实参 xiaoZhang
和 xiaoLi
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理