欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?參數(shù)值傳遞機(jī)制的實(shí)現(xiàn)

 更新時(shí)間:2025年05月22日 08:29:19   作者:kocscs123  
本文主要介紹了Java?參數(shù)值傳遞機(jī)制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一個(gè)很經(jīng)典的問(wèn)題: java的方法入?yún)?是值傳遞還是地址傳遞?

答案是:值傳遞。

今天排查一個(gè)生產(chǎn)問(wèn)題,數(shù)據(jù)庫(kù)鏈接資源沒(méi)有關(guān)閉。

大致代碼邏輯如下:

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();
    ........//不重要的查詢邏輯
}

可以看到 對(duì)象實(shí)例 ps 被傳到了一個(gè)私有方法:query(Preparestatement ps ,String sql) 里,并在方法里面進(jìn)行賦值。然后在方法外進(jìn)行判空關(guān)閉。

很明顯,這段代碼的作者,并不熟悉JAVA的值傳遞機(jī)制,雖然ps被傳到方法里賦值,但是方法外的ps對(duì)象依然還是null,所以finally模塊里的代碼并沒(méi)有執(zhí)行close。只是表面看起來(lái)會(huì)關(guān)閉資源。

實(shí)際上,方法外的ps,和方法里面的ps 并不是同一個(gè)對(duì)象,或者說(shuō)并不是指向同一個(gè)地址。java傳遞的是值而不是地址。這是和C語(yǔ)言最大的區(qū)別。

Java可以在方法里修改對(duì)象的屬性(如 a.setName("myName")),這種修改是可以影響到方法外的對(duì)象,但是并不能通過(guò)=號(hào),對(duì)對(duì)象進(jìn)行重新賦值來(lái)影響方法外的對(duì)象(如a=getNewObject())。

到此這篇關(guān)于Java 參數(shù)值傳遞機(jī)制的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java 參數(shù)值傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解析HashMap中的put方法執(zhí)行流程

    解析HashMap中的put方法執(zhí)行流程

    在Java集合中,HashMap的重要性不言而喻,作為一種存儲(chǔ)鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu),它在日常開發(fā)中有著非常多的應(yīng)用場(chǎng)景,也是面試中的高頻考點(diǎn),本篇文章就來(lái)分析一下HashMap集合中的put方法
    2021-12-12
  • 了解Java多線程的可見性與有序性

    了解Java多線程的可見性與有序性

    這篇文章主要介紹了了解Java多線程的可見性與有序性,在Java內(nèi)存模型中,允許編譯器和處理器對(duì)指令進(jìn)行重排序,但是重排序過(guò)程不會(huì)影響到單線程程序的執(zhí)行,卻會(huì)影響到多線程并發(fā)執(zhí)行的正確性。,需要的朋友可以參考下
    2019-06-06
  • Java中的小知識(shí)點(diǎn)總結(jié)

    Java中的小知識(shí)點(diǎn)總結(jié)

    最近在復(fù)習(xí)Java的基礎(chǔ),遇到了一些比較偏的考核題目,特地總結(jié)一下需要注意的知識(shí)點(diǎn)!不過(guò)在使用IDE編程的時(shí)候,這些問(wèn)題都會(huì)馬上被IDE識(shí)別出來(lái),編譯是通不過(guò)的。我在這里提出來(lái)就相當(dāng)于給初學(xué)者一些貢獻(xiàn)吧
    2013-07-07
  • 世界著名程序SpringMVC完整過(guò)程

    世界著名程序SpringMVC完整過(guò)程

    這篇文章主要為大家介紹了世界著名程序SpringMVC實(shí)現(xiàn)過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Mybatis分頁(yè)插件PageHelper手寫實(shí)現(xiàn)示例

    Mybatis分頁(yè)插件PageHelper手寫實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Mybatis分頁(yè)插件PageHelper手寫實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java異常:java.net.UnknownHostException產(chǎn)生的原因和解決方案

    Java異常:java.net.UnknownHostException產(chǎn)生的原因和解決方案

    這篇文章主要給大家介紹了關(guān)于Java異常:java.net.UnknownHostException產(chǎn)生的原因和解決方案,這個(gè)異常是java.net包中的一部分,具體說(shuō)它是類的一個(gè)實(shí)例,異常通常是由主機(jī)名無(wú)法解析為IP地址引起的,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • SpringBoot中集成日志的四種方式

    SpringBoot中集成日志的四種方式

    在開發(fā)中,日志記錄是保障應(yīng)用程序健壯性、可維護(hù)性的重要手段,通過(guò)日志,我們可以記錄系統(tǒng)的運(yùn)行狀態(tài)、捕獲異常并進(jìn)行調(diào)試,Spring Boot 默認(rèn)使用的是 Logback,但你也可以根據(jù)需求選擇其他框架,以下是幾種常用的日志集成方法,需要的朋友可以參考下
    2024-10-10
  • MybatisPlus批量保存原理及失效原因排查全過(guò)程

    MybatisPlus批量保存原理及失效原因排查全過(guò)程

    這篇文章主要介紹了MybatisPlus批量保存原理及失效原因排查全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java 使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大

    java 使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大

    本篇文章介紹了,在java中使用簡(jiǎn)單的demo實(shí)例告訴你優(yōu)化算法的強(qiáng)大。需要的朋友參考下
    2013-05-05
  • java Runnable接口創(chuàng)建線程

    java Runnable接口創(chuàng)建線程

    這篇文章主要介紹了java Runnable接口創(chuàng)建線程的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評(píng)論