java值传递引用传递

Java中,基本类型按值传递,对象类型(包括数组)按引用传递。值传递示例展示了交换基本类型变量不会影响原始值,而引用传递示例说明了方法能改变原始对象的内容,如数组元素的修改在方法外仍可见。
摘要由CSDN通过智能技术生成

Java值传例子

在Java中,所有基本类型都是按值传递的,而所有对象类型(包括数组)都是按引用传递的。下面是一个基本类型值传递的例子:

public class Main {
  public static void main(String[] args) {
    int num1 = 10;
    int num2 = 20;
    
    // 调用swap方法
    swap(num1, num2);
    
    // 输出结果
    System.out.println("num1 = " + num1); // num1仍然是10
    System.out.println("num2 = " + num2); // num2仍然是20
  }
  
  public static void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
  }
}

在这个例子中,我们定义了两个变量num1num2,并将它们的值分别设置为10和20。然后我们调用swap方法,该方法交换了传递给它的两个参数的值。但是,当我们输出num1num2的值时,我们发现它们仍然是10和20,因为在swap方法中,我们只是交换了ab这两个局部变量的值,而没有影响原始的num1num2变量。

这就是Java中的值传递:当我们将一个基本类型变量传递给一个方法时,方法只能访问该变量的值,而不能访问该变量本身。如果在方法中更改该变量的值,则不会影响原始变量的值。

Java 引用传递例子

在Java中,所有对象类型(包括数组)都是按引用传递的。这意味着当我们将一个对象传递给一个方法时,该方法可以访问该对象的实际引用,并且对该对象所做的更改将反映在原始对象中。下面是一个引用传递的例子:

public class Main {
  public static void main(String[] args) {
    int[] nums = {1, 2, 3};
    
    // 调用addOne方法
    addOne(nums);
    
    // 输出结果
    for (int i = 0; i < nums.length; i++) {
      System.out.println(nums[i]); // 输出2, 3, 4
    }
  }
  
  public static void addOne(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
      arr[i]++;
    }
  }
}

在这个例子中,我们定义了一个包含三个整数的数组nums,并将其初始化为{1, 2, 3}。然后我们调用addOne方法,该方法将遍历数组并将每个元素增加1。当我们输出nums数组的值时,我们发现它已经被修改为{2, 3, 4}。

这是因为在Java中,当我们将一个数组传递给一个方法时,该方法会接收该数组的引用,而不是该数组的副本。因此,在addOne方法中所做的更改会影响原始数组。这就是Java中的引用传递:当我们将一个对象传递给一个方法时,该方法可以访问该对象的实际引用,并且对该对象所做的更改将反映在原始对象中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值