专业的JAVA编程教程与资源

网站首页 > java教程 正文

2.3.Java 传值还是传引用(传值和传引用的区别)

temp10 2024-11-11 13:50:55 java教程 13 ℃ 0 评论

这是一个经典的面试问题,混淆了新手Java开发人员。在这篇文章中,我将用例子和图来演示:Java是按照值传递。

1. 一些定义

传递值:在存储器中复制传入的实际参数值。 传递引用:传递复制实际地址的副本。

2.3.Java 传值还是传引用(传值和传引用的区别)

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表