java中的值传递和引用传递理解

Java中的三大类型:

  1. 基本类型

    • 包括 int, char, float, double, boolean 等。
    • 它们是值传递,即在方法调用时,传递的是实际的值。
  2. 包装类型

    • 包括 Integer, Character, Float, Double, Boolean 等。

    • 它们是引用传递,但由于它们是不可变的(immutable),一旦创建后值不会改变。

      String s = "1";
      System.out.println(s);  // 输出 "1"
      s = "2";
      // 前后两个s已经不是同一个对象了,因为String是不可变类型
      
  3. 类对象等类型

    • 包括数组和用户自定义类对象。
    • 它们是引用传递,传递的是对象的引用。

引用传递的特性:

  • 对于引用传递,只要更改对象的属性值或数组的元素值,所有引用该对象的地方都会看到这些变化。
  • 但是,如果在方法内部改变引用本身,使其指向一个新对象,那么这种改变不会影响原始对象引用。

方法参数是引用的副本:

  • 方法参数传递的是引用的副本。这意味着在方法内部,引用的副本指向了同一个对象。
  • 如果在方法内部改变引用副本的属性或数组的元素,那么原始对象也会改变。
  • 但是,如果在方法内部使引用副本指向一个新对象,那么这种改变不会影响原始对象引用。
示例解释:
java复制代码public static void main(String[] args) {
    int[][] arr = new int[2][2];
    arr[0][0] = 1;
    arr[0][1] = 2;
    arr[1][0] = 3;
    arr[1][1] = 4;
    test(arr);
    System.out.println(arr[0][0]); // 输出1
}

public static void test(int[][] arr){
    int[][] arr2 = new int[arr.length][arr[0].length];
    arr = arr2;
}
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值