您的位置 首页 java

2.3.Java 传值还是传引用

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

1. 一些定义

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

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";
 }
}
  

由于原始和拷贝引用都指向相同对象,所以成员值会改变。

2.3.Java 传值还是传引用

输出:

red
green

文章来源:智云一二三科技

文章标题:2.3.Java 传值还是传引用

文章地址:https://www.zhihuclub.com/177653.shtml

关于作者: 智云科技

热门文章

网站地图