gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java参数传递及值传递实现原理详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

1.按值传递:

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

如下代码 。

?
1
2
3
4
5
6
7
8
9
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.按引用传递 。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
     }
   }
}

再看下面这种情况:

?
1
2
3
4
5
6
7
8
9
10
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的源码,并没有改变原对象的值,只是将其引用指向了另一个对象.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://www.cnblogs.com/linwenbin/p/12308245.html 。

最后此篇关于Java参数传递及值传递实现原理详解的文章就讲到这里了,如果你想了解更多关于Java参数传递及值传递实现原理详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com