优秀的编程知识分享平台

网站首页 > 技术文章 正文

2.3.Java 传值还是传引用(下列关于用表单传值的说法正确的是)

nanyue 2024-10-22 13:12:15 技术文章 11 ℃

这是一个经典的面试问题,混淆了新手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

最近发表
标签列表