<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java中String三種加法的區(qū)別

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

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

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

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

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

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

      ②String tmp = null;

      tmp+= "a";

      tmp+= "b";

      tmp+= "c";

     、跾tring tmp = null;

      StringBuffer buf = new StringBuffer();

      buf.append("a");

      buf.append("b");

      buf.append("c");

      tmp = buf.toString();

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

      如果你注意一下StringBuffer的Javadoc會發(fā)現(xiàn),JDK對它的實現(xiàn)是:tmp=(new StringBuffer()。append(tmp)。append("a"))。toSting();這樣我們發(fā)現(xiàn)②這種方法在隱性生成了一個StringBuffer Object和一個String Object 再乘3就是六個object 的資源耗費。(還不包括String Class和StringBuffer Class內(nèi)部使用的Char[])。而方法③只用了兩個。也許有些程序員會對這些耗費不以為然,的確也是,不過在一些場景下它會成為perfamence的瓶頸。再回頭看看①這種方法,它會被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對象的slice()方法09-27

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

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

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

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

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

    三種無線設備的區(qū)別詳細介紹08-31

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

    主站蜘蛛池模板: 精品一区二区三区在线视频| 国产亚州精品女人久久久久久| 欧美日激情日韩精品| 一本色道久久88精品综合| 成人精品视频成人影院| 精品久久久久久无码中文字幕一区| 狠狠精品干练久久久无码中文字幕| 精品国产sm捆绑最大网免费站| 99热亚洲精品6码| 华人在线精品免费观看| 亚洲精品国产字幕久久不卡| 欧美成人精品网站播放| 国产精品自在线拍国产第一页 | 国产美女精品一区二区三区| 欧美人与性动交α欧美精品成人色XXXX视频 | 国产日韩精品中文字无码| 正在播放酒店精品少妇约| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛| 精品亚洲综合在线第一区| 国产精品毛片无遮挡| 奇米影视7777久久精品| 亚洲综合av永久无码精品一区二区| 久久青青草原精品国产软件| 国产精品va在线观看无码| 91精品成人免费国产片| 日本精品卡一卡2卡3卡四卡 | 国产三级精品三级在线专区1| 精品久久久久中文字幕日本| 久久国产乱子伦免费精品| 久久国产精品无码HDAV| 精品黑人一区二区三区| 亚洲av成人无码久久精品| 亚洲av永久无码精品表情包| 亚洲精品无码成人AAA片| 中文成人无字幕乱码精品区| 亚洲精品午夜无码电影网| 亚洲AV无码国产精品色午友在线| 无码囯产精品一区二区免费| 乱色精品无码一区二区国产盗| 久久Av无码精品人妻系列| 国产成人精品无码片区在线观看|