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

 更新时间:2020年08月06日 10:54:48   作者:志不坚者智不达  
这篇文章主要介绍了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的源码,并没有改变原对象的值,只是将其引用指向了另一个对象。

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

相关文章

  • java实战案例之用户注册并发送邮件激活/发送邮件验证码

    java实战案例之用户注册并发送邮件激活/发送邮件验证码

    现在很多的网站都提供有用户注册功能,当我们注册成功之后就会收到封注册网站的邮件,邮件里包含了我们的注册的用户名和密码及激活账户的超链接等信息,这篇文章主要给大家介绍了关于java实战案例之用户注册并发送邮件激活/发送邮件验证码的相关资料,需要的朋友可以参考下
    2021-09-09
  • 基于Java解决华为机试实现密码截取 

    基于Java解决华为机试实现密码截取 

    这篇文章主要介绍了基于Java解决华为机试实现密码截取,文章围绕主题相关资料展开详细内容,具有一的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-02-02
  • javaweb实现百度GPS定位接口(经纬度)

    javaweb实现百度GPS定位接口(经纬度)

    这篇文章主要介绍了javaweb实现百度GPS定位接口(经纬度),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • SpringBoot对接clerk实现用户信息获取功能

    SpringBoot对接clerk实现用户信息获取功能

    Clerk是一个提供身份验证和用户管理的服务,可以帮助开发者快速集成这些功能,下面我们就来看看如何使用Spring Boot对接Clerk实现用户信息的获取吧
    2025-02-02
  • 详解Spring Security中获取当前登录用户的详细信息的几种方法

    详解Spring Security中获取当前登录用户的详细信息的几种方法

    本文主要介绍了详解Spring Security中获取当前登录用户的详细信息的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • IntelliJ IDEA之高效代码插件RainBow Brackets详解

    IntelliJ IDEA之高效代码插件RainBow Brackets详解

    这篇文章主要介绍了IntelliJ IDEA之高效代码插件RainBow Brackets详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java多线程实现阻塞队列的示例代码

    Java多线程实现阻塞队列的示例代码

    本文主要介绍了Java多线程实现阻塞队列的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • Java 字节数组(byte[])和整型(int)的相互转换

    Java 字节数组(byte[])和整型(int)的相互转换

    在Java编程中,有时需要将字节类型(byte)转换为整数类型(int),或者反过来转换,本文主要介绍了Java 字节数组(byte[])和整型(int)的相互转换,感兴趣的可以了解一下
    2023-12-12
  • java实现动态图片效果

    java实现动态图片效果

    这篇文章主要为大家详细介绍了java实现动态图片效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • SpringBoot项目找不到接口报404错误的解决办法

    SpringBoot项目找不到接口报404错误的解决办法

    写了一个简单的springboot项目,在启动的时候idea未报错,浏览器访问接口时报404的错误,所以本文给大家介绍了SpringBoot项目找不到接口报404错误的解决办法,文中有相关的图文供大家参考,需要的朋友可以参考下
    2024-12-12

最新评论