歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java字符串拼接技巧(StringBuilder使用技巧)

在平時的開發中,我們可能會遇到需要拼接如下格式的字符串(至少我是遇到了很多次):

1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1234,123

這個字符串的特點:多個數據之間通過某一個特殊符號分割。

以前我都是這樣想的,我相信很多的people也是這樣想的:

public class StringTest

{

    public static void main(String[] args)

    {

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i <= 10; i++)

        {  

    //以下這個判斷對於有強迫症的人來說確實有點不爽,每次循環進來都要進行判斷以下,如果循環的次數很多呢,我們都會想到會不會對性能有影響呢?

            if (i != 0)

            {

                sb.append(",");

            }

            sb.append(i);

        }

        System.out.println(sb.toString());

    }

}


看到這裡,你平時的做法是不是也是這樣的,每一次循環中都存在這樣一個判斷,如果是回答是肯定的,那麼你就有必要繼續往下看了,因為以上的方式確實不怎麼明智。(至少對於我這個強迫症&&追求完美的人來說,這樣的代碼讓我很不爽)。

在這裡不會有人要反駁的代碼,要我用"+"來拼接字符串吧,如果你真是這樣想的,Oh My God!!!

我在這裡提供兩種我知道的方式去解決這種現象問題:

方法一:首先取出集合的第一個元素,通過StringBuilder的構造方法,傳入第一個元素,這樣是不是後面的每一次循環就不需要判斷了啊?

public class StringTest

{

    public static void main(String[] args)

    {

        StringBuilder sb = new StringBuilder("0");

        for (int i = 1; i <= 10; i++)

        {

            sb.append(",");

            sb.append(i);

        }

        System.out.println(sb.toString());

    }

}

很多小伙伴想到了上面的方式是通過技巧(java api的掌握熟練程度)將第一個特殊的元素取出來,特殊處理,後面的是不是每一個元素都有規律了,都是以一個字符加上一個數據。想到這裡,你有沒有想到點其他的?

作為一個程序員我們就應該練就一身舉一反三的本領,上面的方式既然能夠將第一個元素作為特殊的數據單獨提取出來,那麼有沒有辦法將最後的一個數據也作為特殊數據單獨提取出來,前面的其他數據不是就有規律可循了嗎?

所以下面就引出了我的第二種解決辦法(《Java編程思想第四版》P286)

方式二:很多人都熟悉StringBuilder的append();方法,但是很多人卻不知道StringBuilder的delete(int startPost,int endPost);如果你有舉一反三的學習習慣,那麼很容易就會掌握到這個api接口。其實在java的api中很多都是相對的,通過這種方式去學習,很快你就會發現自己知道的就很多。

public class StringTest

{

    public static void main(String[] args)

    {

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i <= 10; i++)

        {

            sb.append(i);

            sb.append(",");

        }

        sb.delete(sb.length() - 1, sb.length());//這裡就看你知不知道這個api接口了

        System.out.println(sb.toString());

    }

}

以上只是我針對這一個小的知識點的技巧告訴大家,在學習中應該多學會舉一反三,掌握學習方法是你學好編程的一條捷徑。歡迎大家有更好的學習方法,學習技巧,知識點技巧與我共同討論與分享。

Copyright © Linux教程網 All Rights Reserved