您當前位置: 唯學網 » IT認證培訓 » 輔導專題

Java認證考試輔導:String三種加法的區別

來源:唯學網•教育培訓(www.ddart-bg.com)  【唯學網 • 中國教育電子商務平臺】 加入收藏

在最新的軟件研發領域中,Java認證排在了第一位,因此每年都會有大量的人員參加Java認證考試,為了幫助廣大考生更好的把握考試要點,唯學小編特整理了Java認證考試輔導內容,主要為考生詳細介紹了String三種加法的區別,具體內容如下:

java它提供了如此豐富的library,讓程序員能夠很容易的寫出功能強大的程序。同時它也封裝了如此多的細節,讓程序員能夠輕易的寫出很拙劣的程序。它所代表的object指向思想設計之初是為了把程序員從紛繁復雜的編程細節中解放出來,來達到對已有程序的利用。但是在編程實際上又要求程序員了解其實現的細節,而避免寫出因調用已有library不正引起的performance慢的、耗費系統資源多的程序。

通常成為一個優秀的Java程序員需要較長時間的經驗積累,包括從程序的tuning中或從其他有經驗的程序員口中,才知道一定功能需要怎樣實現,在程序中需要避免那些問題。但這往往是比較片面的,知其然而不知其所以然。我想大多數程序員都有類似的經歷,舉一個簡單的例子,下面有三種對String的累加操作。

①String tmp = "a" + "b" + "c";

②String tmp = null;

tmp+= "a";

tmp+= "b";

tmp+= "c";

③String tmp = null;

StringBuffer buf = new StringBuffer();

buf.append("a");

buf.append("b");

buf.append("c");

tmp = buf.toString();

有些Java程序員在任意的用這三種方法的任一種,無視它們的區別。有些程序員知道第三種方法好,一直在用而不知其為什么好,以至于作為經驗教條的傳授給Java新手。真正的答案是什么呢?讓我們揭開Java String Class和StringBuffer Class的封裝面紗,看看它的內部實現。在Java中的String Class是一個不可變類,所有對一個Sting Object的改變都會導致一個新的String Object的生成。那么對tmp+=a中+符號的實現呢?

如果你注意一下StringBuffer的Javadoc會發現,JDK對它的實現是:tmp=(new StringBuffer()。append(tmp)。append("a"))。toSting();這樣我們發現②這種方法在隱性生成了一個StringBuffer Object和一個String Object 再乘3就是六個object 的資源耗費。(還不包括String Class和StringBuffer Class內部使用的Char[])。而方法③只用了兩個。也許有些程序員會對這些耗費不以為然,的確也是,不過在一些場景下它會成為perfamence的瓶頸。再回頭看看①這種方法,它會被Java編譯器編譯為:tmp=(new StringBuffer()。append("a")。append("b")。append("c"))。to String();我們發現做的和③方法是同樣的事。

唯學網是一個大型的教育考試培訓平臺,更多Java認證考試考試報名,Java認證考試準考證和成績查詢等相關考試信息,請關注唯學網職業資格欄目IT認證考試培訓頻道。小編在此預祝每一位參加Java認證考試的考生都能夠順利通過,早日實現自己的夢想。

0% (0)
0% (10)
已有條評論
新聞瀏覽排行