快速業務通道

JAVA編程:方法調用傳對象參數 - 編程入門網

作者 佚名技術 來源 NET編程 瀏覽 發布時間 2012-06-24

JAVA編程:方法調用傳對象參數

時間:2010-05-21 老紫竹的家

下面是2個測試,分別測試可修改的Object和不可修改的

/** * JAVA里面對象參數的陷阱 * * @author 老紫竹的家(laozizhu.com) * */ public class Test { public static void main(String[] args) { TestValue tv = new TestValue(); tv.first(); TestInteger ti = new TestInteger(); ti.first(); } } class TestValue { class Value { public int i = 15; } // 初始化 Value v = new Value(); public void first() { // 當然是15 System.out.println(v.i); // 第一次調用 second(v); System.out.println(v.i); third(v); System.out.println(v.i); } public void second(Value v) { // 此時這里的v是一個局部變量 // 和類屬性的v相等 System.out.println(v == this.v); v.i = 20; } public void third(Value v) { // 重新設置一個對象 v = new Value(); // 此時這里的v也是一個局部變量 // 但和類屬性的v已經不相等了 // 修改這個v指向對象的數值,已經不影響類里面的屬性v了。 System.out.println(v == this.v); v.i = 25; } } class TestInteger { // 初始化 Integer v = new Integer(15); public void first() { // 當然是15 System.out.println(v); // 第一次調用 second(v); System.out.println(v); third(v); System.out.println(v); } public void second(Integer v) { // 此時這里的v是一個局部變量 // 和類屬性的v相等 System.out.println(v == this.v); // 但這一句和前面的不同,雖然也是給引用賦值,但因為Integer是不可修改的 // 所以這里會生成一個新的對象。 v = 20; // 當然,他們也不再相等 System.out.println(v == this.v); } public void third(Integer v) { // 重新設置一個對象 v = new Integer(25); // 此時這里的v也是一個局部變量 // 但和類屬性的v已經不相等了 // 修改這個v指向對象的數值,已經不影響類里面的屬性v了。 System.out.println(v == this.v); } }

運行結果

15 true 20 false 20 15 true false 15 false 15

希望這個例子能解開一些初學者的疑問。

凌眾科技專業提供服務器租用、服務器托管、企業郵局、虛擬主機等服務,公司網站:http://www.547219.live 為了給廣大客戶了解更多的技術信息,本技術文章收集來源于網絡,凌眾科技尊重文章作者的版權,如果有涉及你的版權有必要刪除你的文章,請和我們聯系。以上信息與文章正文是不可分割的一部分,如果您要轉載本文章,請保留以上信息,謝謝!

分享到: 更多

Copyright ©1999-2011 廈門凌眾科技有限公司 廈門優通互聯科技開發有限公司 All rights reserved

地址(ADD):廈門軟件園二期望海路63號701E(東南融通旁) 郵編(ZIP):361008

電話:0592-5908028 傳真:0592-5908039 咨詢信箱:[email protected] 咨詢OICQ:173723134

《中華人民共和國增值電信業務經營許可證》閩B2-20100024  ICP備案:閩ICP備05037997號

玩真钱炸金花 辽宁十一选五中奖金额表 000069股票行情 福建11选5走势图一定牛 _澳门足球博彩 天津股票融资 江西十一选五历史开奖结果 广西体育彩票十一选五 股票分红到账怎么查询 3d试机号后推荐号码 好彩1开奖结果记录