网站首页 > 技术文章 正文
这是一个经典的面试问题,混淆了新手Java开发人员。在这篇文章中,我将用例子和图来演示:Java是按照值传递。
1. 一些定义
传递值:在存储器中复制传入的实际参数值。 传递引用:传递复制实际地址的副本。
Java 总是传递值。原始数据类型和对象引用都只是值。
2. 传递原始类型变量
因为Java是传值的,所以不难理解下面的代码不会交换任何值。
swap(Type arg1, Type arg2) {
Type temp = arg1;
arg1 = arg2;
arg2 = temp;
}
3.传递对象变量
Java通过引用来操作对象,所有的对象变量都是引用。但是,Java不会通过引用传递方法参数,而是通过值。 问题:为什么对象的成员值会可以改变?
代码示例
代码:
class Apple {
public String color="red";
}
public class Main {
public static void main(String[] args) {
Apple apple = new Apple();
System.out.println(apple.color);
changeApple(apple);
System.out.println(apple.color);
}
public static void changeApple(Apple apple){
apple.color = "green";
}
}
由于原始和拷贝引用都指向相同对象,所以成员值会改变。
输出:
red
green
- 上一篇: 值传递与引用传递(值传递和引用传递实例)
- 下一篇: Java真的只有值传递(java 只有值传递)
猜你喜欢
- 2024-10-22 经典问题探讨:Java中为什么只有值传递?
- 2024-10-22 深入理解Java中方法的参数传递机制
- 2024-10-22 什么是按值传递和按引用传递,Python属于哪一种?
- 2024-10-22 为什么Java只有值传递(java为什么要有数据类型)
- 2024-10-22 【Java】中只有值传递,没有引用传递!
- 2024-10-22 阿瑟Java (19):Java 的函数是值传递吗?
- 2024-10-22 Java-值传递(java值传递机制)
- 2024-10-22 你们不要再吵了!Java只有值传递..
- 2024-10-22 Java中的值传递有什么作用?(java 值传递还是引用传递)
- 2024-10-22 java的值传递和引用传递(java 传值传引用区别)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)