亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關軟件
    >Java參數(shù)傳遞的一些心得 創(chuàng)建者:webmaster 更新時間:2005-05-16 22:14

    Java是種面向對象的語言,可以說,Java所有一切都是對象,這句話很好的描述的Java和別的面向對象的編程語言,例如Object Pascl的區(qū)別。而且,這個特性,也對函數(shù)的參數(shù)傳遞有著重要的影響。
    用過dephi的人都知道,在object Pascal中,函數(shù)的參數(shù)傳遞有兩種方式,值傳遞和變參傳遞,簡單的說,就是加不加var的區(qū)別。加了var,就是變參傳遞,實質(zhì)上傳遞的是這個參數(shù)的指針,也就是說,在函數(shù)中對參數(shù)的任何修改,實際上就是參數(shù)對應的變量的修改,這樣程序執(zhí)行完后,作為參數(shù)傳進來的變量的值可能發(fā)生改變。而不加var,則就是值傳遞,實質(zhì)上,就是將值先拷貝一份,然后,將拷貝的傳遞給函數(shù),這樣,修改實際上對原來的變量沒有影響,(因為只是對拷貝的修改)而且,等到函數(shù)返回時,函數(shù)調(diào)用的空間退棧,拷貝的參數(shù)空間也被收回。
    而Java來說,由于所有的皆是對象,所以,參數(shù)傳遞有所不同。其中,沒有了var的區(qū)別。但實際上,由于對象作為參數(shù),也就是相當于var式傳遞,因為,傳遞給函數(shù)的是原對象的指針,這樣,對傳入的參數(shù)的修改,實際上就是作為參數(shù)的對象的修改,在這一點上,Java的參數(shù)傳遞實際上和var方式很象。但在簡單數(shù)據(jù)類型做參數(shù)上,Java卻是遵循值傳遞的原則,即在函數(shù)中修改不會對傳入的簡單數(shù)據(jù)類型的變量產(chǎn)生影響,比如象int類型的參數(shù),即使函數(shù)中有過修改,也不會對傳入的原變量有影響。由于這樣,我們在對簡單類型的變量作修改時(比如,想讓它們作函數(shù)參數(shù),然后在函數(shù)中修改它們),會誤以為真的修改了變量,其實不然,知道值參的傳遞就會很容易明白這個道理。所以,我們需要將變量包裝成一個對象(例如,設一個對象,以一個int值的變量作參數(shù))這樣,以此對象作參數(shù),當在函數(shù)中對對象中的int變量修改后,原對象中的值便得到修改了。
    由此,我們可以更加深入的看看遞歸函數(shù)的問題。遞歸函數(shù)通過不斷的調(diào)用自身,其實在做一個不斷的入棧然后出棧的過程,隨著遞歸的進行,新遞歸函數(shù)不斷的入棧,等到條件滿足返回時,再不斷的出棧。這樣,對于值參的話,每次遞歸都要將其現(xiàn)在的數(shù)據(jù)保存到棧中,而變參,則只保存引用,所以,遞歸函數(shù)在不同的編程語言中的應用要相應的注意。比如,數(shù)組類型的數(shù)據(jù),在object pascal中要定義數(shù)組類型的type,這樣,每次遞歸時,實際上是將當前的數(shù)組參數(shù)作值參存儲,即每次遞歸就要存儲相應的數(shù)組,這樣,每次遞歸過程實際上是對一個新的數(shù)組進行操作。而java就不同,它是以數(shù)組變量作參數(shù),這樣,每次的遞歸操作實際上是對同一個數(shù)組進行操作。由于有這樣的不同,所以,需要在對數(shù)組改變后作還原操作,這樣,每次才能正確地遞歸。
    以上是點小小的心得,呵呵,如果有錯,請與我聯(lián)系。
    相關文章
    本頁查看次數(shù):