編程方法學 – 公開課學習筆記(五)

來源:互聯網
上載者:User

第13課:對字串的處理 2011.7.25

  接著上一課介紹String,進行了char和String的區分。

  介紹了StringTohenizer的用法,以前我一般使用的是String[] str.split的方式,從C過來,比較習慣[]的數組方式。同樣適用單純分割,可以用於文本啊訊息的解析。預設是“ ”分割,如果需要使用其他的分割或者增加某些分割,可以在建構函式中指定,例如new StringTohenizer(str, ", ");,這裡表示使用空格和逗號作為分割。可以用hasMoreTokens()檢查,以及用nextToken()方法來擷取。

  接著是一個奇技淫巧,字母的移位,可以向後移動,也可以向前移。如果想前遷移,可修訂為26-(-key % 26),其中key就是位移,向前位移3,key=-3。另一方面也就是我們程式需要注意的,key不僅僅可以為正,也可以為負,不僅在正負26範圍內,也可以在之外,key可以是任何整數,而不是人為的想當然只是某些值,這會導致程式是否正確運行。


第14課:記憶體 2011.7.26、27

  介紹記憶體,這絕對是C程式員中痛苦的回憶,尤其在開發服務的時候,不要導致記憶體流失,不要忘了釋放內容。以前曾經有書說java沒有指標,其實每個對象都是指標,只是程式員無需關心回收記憶體,避免很多異常。

  在java中,char佔2 bytes。

  資料存放區有靜態變數,在調用程式的時候就已經分配。動態變數資料,儲存的方式成為HEAP,例如一個變數儲存在地址2000,那麼下一個變數儲存在2004,地址分配是不斷增加的。local變數資料,儲存的方式成為stack。例如一個變數儲存在地址FFFF,下一變數儲存在地址FFFC,地址是不斷減少。

  Heap的地址在增加,stack的地址在減少,如果他們的地址空間重疊,就會出現崩潰。但是大部分的程式不需要考慮這個問題,因為記憶體足夠。只是如果伺服器是不簡單允許,必須要跟蹤這種情況,如果記憶體一直漲得不到收斂,就很麻煩了。

  無論是Heap還是stack在分配的時候一個4bytes的overhead,例如一個method,有2個local變數,那麼先分別一個overhead,表示這個method,然後分配兩個變數的記憶體,如果其中一個變數是通過new來建立一個對象,在運行時,運行到new的時候,這就是一個動態變數,從heap中分配一個overhead,這個overhead的地址就是這個對象的地址,然後在heap中為這個對象分配記憶體。Object
o = new Object(......);通過這個"=",將對象的地址也就是指標的數值填入之前在stack中為這個變數分配的4 bytes中的記憶體中。

  由於所需學習C,所以對java的記憶體配置還是很能理解,只是不知道分為heap和stack兩種存放方式。

第15課:指標要點回顧和檔案 2011.7.27

  先繼續上一課對指標作進一步說明。對於primitive,也就是包括int,double,boolean,char這些,不是對象,所以記憶體中保持是當前的數值,如果作為method中的parameter,那麼就是給出一份copy。這點和對象傳遞指標有重大不同,copy一份指標,實際還是指向同一對象。

  接著介紹檔案,通過類BufferReader去讀文本,通過類PrintWriter去寫文本。檔案處理完畢要記住close()。

  介紹java的異常捕獲和處理。try{...}catch(IOException e1){}catch(Exception e2){},這是java比C/C++中更適合伺服器開發的方式,可以輕鬆處理你想到和你沒有想到的異常。Yeah,這確實是價值連城。try中的語句數量要少,對危險操作才進行catch,盡量不要將大量的處理統統扔進來,不過如果你感覺不可靠,都可以扔進來。catch我也經常喜歡用於調測,例如程式掛了的原因定位。可以throw一個異常,給調用者進行處理。


相關連結:我的與編程思想相關的文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.