Java 参数值传递机制的实现

 更新时间:2025年05月22日 08:29:19   作者:kocscs123  
本文主要介绍了Java 参数值传递机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一个很经典的问题: java的方法入参 是值传递还是地址传递?

答案是:值传递。

今天排查一个生产问题,数据库链接资源没有关闭。

大致代码逻辑如下:

try{
    Preparestatement ps = null;
    String sql = "select * from tableA where id=?";
    this.query(ps,sql);
}catch(Exception e){
    logger.error("error:",e);
}finally{
    if(ps!=null){
        ps.close();
    }
}

private void query(Preparestatement ps ,String sql){
    ps = this.getPreparestatement();
    ........//不重要的查询逻辑
}

可以看到 对象实例 ps 被传到了一个私有方法:query(Preparestatement ps ,String sql) 里,并在方法里面进行赋值。然后在方法外进行判空关闭。

很明显,这段代码的作者,并不熟悉JAVA的值传递机制,虽然ps被传到方法里赋值,但是方法外的ps对象依然还是null,所以finally模块里的代码并没有执行close。只是表面看起来会关闭资源。

实际上,方法外的ps,和方法里面的ps 并不是同一个对象,或者说并不是指向同一个地址。java传递的是值而不是地址。这是和C语言最大的区别。

Java可以在方法里修改对象的属性(如 a.setName("myName")),这种修改是可以影响到方法外的对象,但是并不能通过=号,对对象进行重新赋值来影响方法外的对象(如a=getNewObject())

到此这篇关于Java 参数值传递机制的实现的文章就介绍到这了,更多相关Java 参数值传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解析HashMap中的put方法执行流程

    解析HashMap中的put方法执行流程

    在Java集合中,HashMap的重要性不言而喻,作为一种存储键值对的数据结构,它在日常开发中有着非常多的应用场景,也是面试中的高频考点,本篇文章就来分析一下HashMap集合中的put方法
    2021-12-12
  • 了解Java多线程的可见性与有序性

    了解Java多线程的可见性与有序性

    这篇文章主要介绍了了解Java多线程的可见性与有序性,在Java内存模型中,允许编译器和处理器对指令进行重排序,但是重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。,需要的朋友可以参考下
    2019-06-06
  • Java中的小知识点总结

    Java中的小知识点总结

    最近在复习Java的基础,遇到了一些比较偏的考核题目,特地总结一下需要注意的知识点!不过在使用IDE编程的时候,这些问题都会马上被IDE识别出来,编译是通不过的。我在这里提出来就相当于给初学者一些贡献吧
    2013-07-07
  • 世界著名程序SpringMVC完整过程

    世界著名程序SpringMVC完整过程

    这篇文章主要为大家介绍了世界著名程序SpringMVC实现过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Mybatis分页插件PageHelper手写实现示例

    Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java异常:java.net.UnknownHostException产生的原因和解决方案

    Java异常:java.net.UnknownHostException产生的原因和解决方案

    这篇文章主要给大家介绍了关于Java异常:java.net.UnknownHostException产生的原因和解决方案,这个异常是java.net包中的一部分,具体说它是类的一个实例,异常通常是由主机名无法解析为IP地址引起的,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • SpringBoot中集成日志的四种方式

    SpringBoot中集成日志的四种方式

    在开发中,日志记录是保障应用程序健壮性、可维护性的重要手段,通过日志,我们可以记录系统的运行状态、捕获异常并进行调试,Spring Boot 默认使用的是 Logback,但你也可以根据需求选择其他框架,以下是几种常用的日志集成方法,需要的朋友可以参考下
    2024-10-10
  • MybatisPlus批量保存原理及失效原因排查全过程

    MybatisPlus批量保存原理及失效原因排查全过程

    这篇文章主要介绍了MybatisPlus批量保存原理及失效原因排查全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • java 使用简单的demo实例告诉你优化算法的强大

    java 使用简单的demo实例告诉你优化算法的强大

    本篇文章介绍了,在java中使用简单的demo实例告诉你优化算法的强大。需要的朋友参考下
    2013-05-05
  • java Runnable接口创建线程

    java Runnable接口创建线程

    这篇文章主要介绍了java Runnable接口创建线程的相关资料,需要的朋友可以参考下
    2017-07-07

最新评论