中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Java中String三種加法的區(qū)別

      時(shí)間:2024-06-21 04:57:08 JAVA認(rèn)證 我要投稿
      • 相關(guān)推薦

      Java中String三種加法的區(qū)別

        java提供了如此豐富的library,讓程序員能夠很容易的寫出功能強(qiáng)大的程序。同時(shí)它也封裝了如此多的細(xì)節(jié),讓程序員能夠輕易的寫出很拙劣的程序。那么java對(duì)三種對(duì)String的累加操作方法有哪些?下面一起來(lái)看看吧!

        java所代表的object指向思想設(shè)計(jì)之初是為了把程序員從紛繁復(fù)雜的編程細(xì)節(jié)中解放出來(lái),來(lái)達(dá)到對(duì)已有程序的利用。但是在編程實(shí)際上又要求程序員了解其實(shí)現(xiàn)的細(xì)節(jié),而避免寫出因調(diào)用已有l(wèi)ibrary不正引起的performance慢的、耗費(fèi)系統(tǒng)資源多的程序。

        通常成為一個(gè)優(yōu)秀的Java程序員需要較長(zhǎng)時(shí)間的經(jīng)驗(yàn)積累,包括從程序的tuning中或從其他有經(jīng)驗(yàn)的程序員口中,才知道一定功能需要怎樣實(shí)現(xiàn),在程序中需要避免那些問(wèn)題。但這往往是比較片面的,知其然而不知其所以然。我想大多數(shù)程序員都有類似的經(jīng)歷,舉一個(gè)簡(jiǎn)單的例子,下面有三種對(duì)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程序員在任意的用這三種方法的任一種,無(wú)視它們的區(qū)別。有些程序員知道第三種方法好,一直在用而不知其為什么好,以至于作為經(jīng)驗(yàn)教條的傳授給Java新手。真正的答案是什么呢?讓我們揭開Java String Class和StringBuffer Class的封裝面紗,看看它的內(nèi)部實(shí)現(xiàn)。在Java中的String Class是一個(gè)不可變類,所有對(duì)一個(gè)Sting Object的改變都會(huì)導(dǎo)致一個(gè)新的String Object的生成。那么對(duì)tmp+=a中+符號(hào)的實(shí)現(xiàn)呢?

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

      【Java中String三種加法的區(qū)別】相關(guān)文章:

      Java與Java web的區(qū)別08-10

      關(guān)于Java中Queue和BlockingQueue的區(qū)別07-23

      javascript中String對(duì)象的slice()方法09-27

      JAVA和.NET開發(fā)過(guò)程中的區(qū)別10-25

      Java和PHP的區(qū)別08-21

      PHP和Java的區(qū)別09-06

      j2ee與java的區(qū)別08-10

      javascript函數(shù)命名的三種方式及區(qū)別08-08

      三種無(wú)線設(shè)備的區(qū)別詳細(xì)介紹08-31

      j2ee與java web的區(qū)別09-19

      主站蜘蛛池模板: 亚洲精品中文字幕观看| 久久精品国产只有精品96| 亚洲人成伊人成综合网中文| 亚洲人成网站在线播放小说 | 五家渠市| 国产内射一区二区三区| 亚洲人成伊人成综合网中文| 免费国产一级片内射老| 国产无卡视频在线免费观看| 霞浦县| 汶川县| 靖边县| 石狮市| 定陶县| 茂名市| 连云港市| 红桥区| 亚洲情精品中文字幕有码在线| 正宁县| 连江县| 平遥县| 日本一区二区三区视频一| 简阳市| 突泉县| 亚洲地区一区二区三区| 91精品国产91久久综合桃花| 亚洲精品乱码久久久久99| av无码电影一区二区三区| av中文码一区二区三区| 人妻精品一区二区在线视频| 国产精品女主播在线观看 | 风流少妇一区二区三区| 久久伊人网久久伊人网| 久久精品国产亚洲av热一区| 国产成年无码久久久免费| 国产日韩欧美视频成人| 亚洲中文欧美日韩在线| 一区二区三区国产高潮| 日本不卡在线一区二区| 精品乱码一区内射人妻| 久久夜色精品国产亚洲噜噜|