博客
关于我
Java的值传递和引用传递
阅读量:723 次
发布时间:2019-03-17

本文共 1627 字,大约阅读时间需要 5 分钟。

Java值传递与引用传递详解

一、代码示例

以下是两种主要的编程语言中的代码示例:

1. User类

public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

2. 测试类

public class Demo1 {
public static void main(String[] args) {
User user = new User();
List
list = new ArrayList<>();
list.add(user);
user.setName("李四");
System.out.println(list.get(0).getName());
}
}

二、值传递与引用传递

1. 值传递

值传递是指方法调用时,传递的参数是按值的拷贝传递。具体实现方式是将实际参数的值复制到方法中的形式参数中,两者之间不会有任何关联。

2. 引用传递

引用传递是指方法调用时,传递的参数是按引用的方式传递。具体实现方式是将实际参数的内存地址传递给方法中的形式参数参数,两者指向同一个内存空间。

三、值传递的特点

  • 传递的是值的拷贝:传递后,原参数与方法参数之间互不影响。
  • 方法修改不会影响原参数:如下代码所示:
public class TempTest {
private void test1(int a) {
a = 5;
System.out.println("test1方法中的a=" + a);
}
public static void main(String[] args) {
TempTest t = new TempTest();
int a = 3;
t.test1(a);
System.out.println("main方法中的a=" + a);
}
}

运行结果:

test1方法中的a=5
main方法中的a=3

四、引用传递的特点

  • 传递的是引用的地址:传递后,原参数与方法参数指向同一个内存空间。
  • 方法修改会影响原参数:如下代码所示:
public class TempTest {
private void test1(A a) {
a.age = 20;
System.out.println("test1方法中的age=" + a.age);
}
public static void main(String[] args) {
TempTest t = new TempTest();
A a = new A();
a.age = 10;
t.test1(a);
System.out.println("main方法中的age=" + a.age);
}
}

运行结果:

test1方法中的age=20
main方法中的age=20

五、总结

在Java中,参数传递都是按值传递。对于基本数据类型和String类型,传递的是值的拷贝;对于对象类型,传递的是引用的地址。理解这一点是掌握Java核心概念的关键。

通过以上代码示例和解释,我们可以清楚地看到值传递和引用传递的区别。希望这篇文章能帮助你更好地理解Java的参数传递机制。

转载地址:http://egpez.baihongyu.com/

你可能感兴趣的文章
mysql以服务方式运行
查看>>
mysql优化--索引原理
查看>>
MySQL优化之BTree索引使用规则
查看>>
MySQL优化之推荐使用规范
查看>>
Webpack Critical CSS 提取与内联教程
查看>>
mysql优化概述(范式.索引.定位慢查询)
查看>>
MySQL优化的一些需要注意的地方
查看>>
mysql优化相关
查看>>
MySql优化系列-优化版造数据(存储过程+函数+修改存储引擎)-2
查看>>
MySql优化系列-进阶版造数据(load data statment)-3
查看>>
MySql优化系列-造数据(存储过程+函数)-1
查看>>
MySQL优化配置详解
查看>>
Mysql优化高级篇(全)
查看>>
mysql会员求积分_MySql-统计所有会员的最高前10次的积分和
查看>>
mysql会对联合索性排序优化_MySQL索引优化实战
查看>>
MySQL作为服务端的配置过程与实际案例
查看>>
Mysql使用命令行备份数据
查看>>
MySQL保姆级教程(SQL语法基础篇)从小白到高手的进阶指南,收藏这一篇就够了
查看>>
MySQL修改root密码的各种方法
查看>>
MySQL修改root密码的多种方法
查看>>