我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          Java,誤解為何如此之深

          前幾天被電話面試,問Java的參數傳遞方式,我說只有一種方式,就是by value啊,對方糾正我說,基本類型傳值,對象類 型傳引用;嗚呼,當時被噎了一下,幾秒鐘后回過神來,我明白他的意思,也明白我碰上新世紀的新新人類了,但我怕他不明白啊,就說我們還是先把“引用”這個 概念定義清楚吧,不要同一個詞兩人有兩個意思,或者舉個例子吧,在函數里對String類型的參數賦值是不影響實際參數的啊,于是他也明白我其實也明白, 電話面試就算過了
          然而還不算完,正式面試的四輪:筆試題,筆試完后與leader談,談完后與manager談,談完后與VP談,居然每一輪都有這道題!只不過換成了swap函數的形式,讓你說出執行結果;我就納了悶了,這道題在人們心目中的形象就那么高大?并且甲方答案也似是而非?
          Bjarne一直認為是C++的教育害了C++,那么是什么害了Java語言呢?過度的商業宣傳!
          當然,商業宣傳成功的幫助了Java平臺,吸引了大量開發者,但對Java語言來說,先聽到宣傳詞后再來學習的初學者,耳中充斥的是“Java取消了指針”,“Java沒有內存泄露”,“Java純面向對象”等宣傳用語,先入為主的就接受了表面現象,而沒有理解問題的實質
          Java 取消了指針?看看那個所謂的“引用”為空時拋出的異常吧,看看在Java實現者的眼中這個東西到底是啥吧:NullPointerException!不 是我鄙視Sun,它的細節偽裝的確實不如MS:.Net里對應的異常叫NullReferenceException,雖然也是換湯不換藥;作為一種類C語言,我認為對應概念的命名還是一致較好,Java里其實全是指針,你基本無法得到對象本身,只不過這種指針功能受限,不需刪除而已
          指針的概念被偽裝起來,不需要delete了,那么除內存之外的其它資源呢?數數你的程序里有多少個finally就可以了
          Java 純面向對象?其實就這句話本身來說也無可厚非,只是它使用了<<箭魚行動>>里定義的“錯誤引導”,這句話會使初學者傾向于認為 用Java寫出來的程序都是面向對象的,從而阻礙了理解真正的面向對象;數數你程序里有多少根據對象類型的switch/if/else就可以了
          題外話:
          面試時被問道面向對象的三個基本特征,我知道他想聽到什么封裝繼承多態,但實際上傳統面向對象的核心特征就是多態,繼承只是用來實現多態的一種手段,并非本質特征;C語言沒有繼承,但照樣可以進行OO風格的編程


          posted on 2007-12-10 21:12 々上善若水々 閱讀(856) 評論(0)  編輯  收藏 所屬分類: J2SE

          主站蜘蛛池模板: 高青县| 芮城县| 黄龙县| 乡城县| 克拉玛依市| 仪陇县| 海丰县| 左权县| 察雅县| 台安县| 铁力市| 寿光市| 加查县| 遵义市| 古丈县| 雅安市| 团风县| 淮阳县| 大余县| 玉山县| 宿迁市| 门头沟区| 宕昌县| 弥勒县| 项城市| 东乡| 鹤壁市| 富阳市| 祁东县| 南郑县| 诸暨市| 崇州市| 北辰区| 禹州市| 南木林县| 克拉玛依市| 洛阳市| 上蔡县| 安庆市| 宝山区| 乐清市|