亲宝软件园·资讯

展开

Java参数传递及值传递实现原理详解

志不坚者智不达 人气:0

本文着重讲解了Java参数传递及值传递实现原理详解,文中通过代码实例讲解的非常细致,对大家的工作和学习具有一定的参考学习价值,欢迎大家阅读和收藏

java方法参数的传递有两种,值传递和引用传递。

1.按值传递:

参数类型是int,long等八大基本数据类型时,参数传递的过程是按值拷贝的过程

如下代码

public static void main(String[] args) {
    int a = 5;
    fun(a);
    System.out.println(a);// 输出结果为5
  }
 
  private static void fun(int a) {
    a += 1;
  }

2.按引用传递

参数类型为引用类型,参数传递的过程采用拷贝引用的方式

public class Test {
 
  public static void main(String[] args) {
    A a = new A(5);
    fun(a);
    System.out.println(a.a);// 输出结果为6
  }
 
  private static void fun(A a) {
    a.a += 1;
  }
 
  static class A {
    public int a;
 
    public A(int a) {
      this.a = a;
    }
  }
}

再看下面这种情况:

public class Test {
  public static void main(String[] args) {
    Integer a = 5;
    fun(a);
    System.out.println(a);// 输出结果为5
  }
  private static void fun(Integer a) {
    a += 1;
  }
}

这里明明是引用传递,为什么没有改变对象的值呢?

这里其实使用了基本数据类型封装类的自动装箱功能。

Integer a = 5,编译后实际为Integer a = Integer.valueOf(5),查看Integer的源码,并没有改变原对象的值,只是将其引用指向了另一个对象。

加载全部内容

相关教程
猜你喜欢
用户评论