博客
关于我
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/

你可能感兴趣的文章
php unicode编码转成unioce字符(中文)
查看>>
php url路径问题和php文件以绝对路径引入
查看>>
PHP WebSehll 后门脚本与检测工具
查看>>
ReentrantLock源码解析
查看>>
PHP XSS攻击防范--如何过滤用户输入
查看>>
php zookeeper实现分布式锁
查看>>
PHP 中 this,self,parent 的区别、用法
查看>>
PHP 中如何高效地处理大规模数据的排序?
查看>>
PHP 之ftp客户端类封装实现
查看>>
php 代码改进
查看>>
php 代码混淆
查看>>
PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
查看>>
Redis系列之如何避免缓存击穿
查看>>
php 内存分析
查看>>
PHP 函数名前面加&
查看>>
redis报错
查看>>
php 删除包含某一字符的数组元素
查看>>
Redis学习总结(19)——Redis 5种集群方式对比
查看>>
php 反射
查看>>
php 处理 大并发
查看>>