java對象的傳遞

來源:互聯網
上載者:User

private void test() throws SQLException{
   ResultSet rs = query();
   closeAll(rs);
   System.out.println("535........關於java對象傳遞的測試ResultSet:"+rs);
   rs.close();
   rs = null;
}

private void closeAll(ResultSet rs) throws SQLException {
   
    if (rs != null){
      Statement stmt = null;
      Connection con = null;
      stmt = rs.getStatement();
      con = stmt.getConnection();
      rs.close();
      rs = null;
      stmt.close();
      stmt = null;
      con.close();
      con = null;
    }   
   

  }
列印出的結果:535........關於java對象傳遞的測試ResultSet:org.apache.commons.dbcp.DelegatingResultSet@2fae4a
--------------
我在closeAll方法中已經把rs = null;了,為什麼還能列印出這個對象呢?為什麼不列印出null呢?

在java中傳遞對象的時候,是對引用的值進行複製傳遞;建立了引用的副本。rs=null修改了引用的副本,並沒有修改原來的引用;所以列印出來的還有。

但這兩個引用所指向的都是同一個對象,實際上rs.close() 已經把rs對象關閉掉了。。

 http://blog.csdn.net/zhaoqiubo/archive/2004/10/27/zhaoqiubo13.aspx

 

System.out.println("535........關於java對象傳遞的測試ResultSet:"+rs);  
  此處列印的rs只是一個控制代碼,而不是rs的實際值,就好像有個地方的地址是"地球路100號",有一天這個地方的建築物被拆了,儘管沒有了建築物,但是這個地方還是叫"地球路100號",但是可以再重新蓋新的樓房一樣

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/zhaoqiubo/archive/2004/10/27/154958.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.