• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            java.util.Formatter 詳解

            一、java.util.Formatter

             

            java.util.Formatter JDK1.5新增的類庫,功能很強大,但是不好掌握,就像下棋一樣,知道如何走棋子,和熟練應用完全是兩碼事。

             

            格式化主要用在文本輸出方面,比如,數字、日期、金額等,還有類似超市的購物單小票等等,都會用到格式化輸出的工具。在此類沒出現之前,只能通過空格縮進或這個制表符來對單據等格式做一些控制,現在只要掌握java.util.Formatter,一切問題就解決了。

             

            shut!有關這個類javadoc文檔太難看懂了,通過猜測、嘗試、查看源碼、對文檔斷章取義基本搞明白了,寫了下面的例子:

             

            import java.util.Calendar;
            import java.util.Formatter;
            import java.util.GregorianCalendar;

            /**
            * Formatter
            測試
            *
            * @author leizhimin 2009-7-16 16:31:02
            */

            public class TestFormatter {

                   
            public static void main(String[] args) {
                           
            //%[argument_index$][flags][width][.precision]conversion
                            Formatter f1 =
            new Formatter(System.out);
                           
            //格式化輸出字符串和數字
                            f1.format(
            "格式化輸出:%s %d", "a", 1235);
                            System.out.println(
            "\n--------");
                           
            //日期的格式化
                            Calendar c =
            new GregorianCalendar();
                            f1.format(
            "當前日期:%1$tY-%1$tm-%1$te", c);
                            System.out.println(
            "\n--------");
                           
            //日期的格式化,并將格式化結果存儲到一個字符串變量中
                            String s = String.format(
            "當前日期:%1$tY-%1$tm-%1$te", c);
                            System.out.println(s);
                           
            //2$:取第二個參數
                           
            //-: 指定為左對齊,默認右對齊
                           
            //5:最大輸出寬度為20,不夠會補空格,實際若超過則全部輸出
                           
            //.2:在此表示輸出參數2的最大字符數量,如果是浮點數字,則表示小數部分顯示的位數
                           
            //s :表示輸入參數是字符串
                            f1.format(
            "%2$-5.2s %1$2s", "123", "456");

                           
            //將格式化的結果存儲到字符串
                            System.out.println(
            "\n--------");
                            String fs = String.format(
            "身高體重(%.2f , %d)", 173.2, 65);
                            System.out.println(fs);

                           
            //printf()本質上也是用System.out作為輸出目標構造Formatter對象
                           
            //調用format方法,并將printf的參數傳給format方法而得。
                            System.out.println(
            "\n--------");
                            System.out.printf(
            "身高體重(%.2f , %d)", 180.2, 65);


                    }
            }

             

            運行結果:

            格式化輸出:a 1235
            --------
            當前日期:2009-07-16
            --------
            當前日期:2009-07-16
            45        123
            --------
            身高體重(173.20 , 65)

            --------
            身高體重(180.20 , 65)
            Process finished with exit code 0

             

            總結:

            1java.util.Formatter功能強大,主要用于自由格式的制定,也可以指定金額、日期等格式。但以使用方便為原則。

             

            2、其他格式化類:

            java.text.DateFormatSymbols
            java.text.DecimalFormatSymbols
            java.text.FieldPosition
            java.text.Format
                            java.text.DateFormat
                                    java.text.SimpleDateFormat
                            java.text.MessageFormat
                            java.text.NumberFormat
                                    java.text.ChoiceFormat
                                    java.text.DecimalFormat

             

            3、String.format()、System.out.printf()方法底層也是通過此類方法調用實現的。

             

            4Calendar類用來表示系統抽象時間,是日期格式化等操作中最重要的一個類,這個類的實例化方式是:

            Calendar rightNow = Calendar.getInstance();

            并且可以通過下面的方法改變實例所表示的抽象時間:

            void setTime(Date date)
                     
            使用給定的 Date 設置此 Calendar 的時間。
            void setTimeInMillis(long millis)
                     
            用給定的 long 值設置此 Calendar 的當前時間值。

            有關日期的格式化還比較復雜,不光與現實方式有關,其實還與時區、國家習慣等等有關,因此在處理日期格式化問題上一定要慎重對待,沒有理由不用專門的類做處理。

             

            二、java.text.Format

             

            Format 是一個用于格式化語言環境敏感的信息(如日期、消息和數字)的抽象基類。

             

            光從類的層次結構上看,Java對格式的處理也算費了大勁了,但還是不怎么好用。

             

            消息格式化類比較讓人郁悶,SUNAPI文檔看起來好像翻譯的有毛病。

             

            import java.text.MessageFormat;
            import java.util.Date;

            /**
            *
            消息格式化類的使用
            *
            * @author leizhimin 2009-7-29 23:09:41
            */

            public class TestMsgFormat {
                   
            public static void main(String[] args) {
                            String msg =
            "歡迎光臨,當前({0})等待的業務受理的顧客有{1}位,請排號辦理業務!";
                            MessageFormat mf =
            new MessageFormat(msg);
                            String fmsg = mf.format(
            new Object[]{new Date(), 35});
                            System.out.println(fmsg);
                    }
            }

             

            歡迎光臨,當前(09-7-29 下午11:17)等待的業務受理的顧客有35位,請排號辦理業務!

            Process finished with exit code 0

             

            注意,這個參數索引時{0}{9}的非負整數,多了不認!

             

            posted on 2009-08-03 19:29 肥仔 閱讀(643) 評論(0)  編輯 收藏 引用 所屬分類: Web-后臺

            婷婷久久香蕉五月综合加勒比| 久久久久亚洲AV成人网人人网站| 久久国产AVJUST麻豆| 久久青草国产精品一区| 久久亚洲综合色一区二区三区| 精品国产91久久久久久久| 激情综合色综合久久综合| 武侠古典久久婷婷狼人伊人| 狠狠色婷婷综合天天久久丁香| 久久久久中文字幕| 精品久久人人爽天天玩人人妻| 狠狠干狠狠久久| 久久高潮一级毛片免费| 久久精品国产久精国产一老狼| 久久久久无码精品国产| 亚洲欧美日韩久久精品| 99久久国产主播综合精品| 久久婷婷国产剧情内射白浆| 国产AⅤ精品一区二区三区久久| 亚洲欧洲中文日韩久久AV乱码| 品成人欧美大片久久国产欧美...| 久久久久久精品无码人妻| 国产亚洲美女精品久久久2020| 91精品免费久久久久久久久| 色婷婷久久综合中文久久蜜桃av| 综合久久国产九一剧情麻豆 | 亚洲国产精品无码久久久蜜芽 | 7国产欧美日韩综合天堂中文久久久久 | 狠狠色丁香久久婷婷综合五月| 久久久无码一区二区三区| 精品久久久无码人妻中文字幕豆芽| 72种姿势欧美久久久久大黄蕉| 久久精品www| 人人狠狠综合久久88成人| 久久精品国产99国产精偷 | 中文字幕亚洲综合久久2| 国产999精品久久久久久| 久久亚洲日韩看片无码| 久久久久亚洲精品无码网址| 国产成人精品综合久久久久| 久久精品国产国产精品四凭 |