您的位置:首页 > 编程语言 > Java开发

JDK1.5新特性之二----新的格式化输出

2004-10-09 15:50 399 查看
再来看看另外的新东东。。。


JDK5.0允许象C语言那样直接用printf()方法来格式化输出,并且提供了许多参数来格式化输入,调用也很简单:
System.out.format("Pi is approximately  %f", Math.Pi);
   System.out.printf("Pi is approximately  %f", Math.Pi);
 
printf()和
format()
方法具有相同的功能.
System.out
java.io.PrintStream的实例
.
PrintStream
,
java.io.PrintWriter
, 和
java.lang.String
每个类都有四个新的格式化方法:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

format( String format, Object... args);
printf( String format, Object... args);
format( Locale locale, String format, Object... args);
printf( Locale locale, String format, Object... args);
 
同时,以前的formatter类也提供了更完善的方法来格式化,例如:
formatter.format("Pi is approximately %1$f," +
        "and e is about %2$f", Math.PI, Math.E);
 
格式化元素的构成如下:
%[argument_index$][flags][width][.precision]conversion

其中:
argument_index是一个正整数,说明了参数的位置,1为取第一个参数

width表示输出的最小字母个数

precision代表数字的小数位数

conversion代表被格式化的参数的类型:

f
  float,

t<
4000
/span>
  time

d
  decimal

o
octal

x
  hexadecimal

s
  general

c
  a Unicode character
以下是个例子:
package format;

 

   import java.util.Formatter;

 

   public class UsingFormatter {

 

     public static void main(String[] args) {

       if (args.length != 1) {

         System.err.println("usage: " +

           "java format/UsingFormatter ");

         System.exit(0);

       }

       String format = args[0];

 

       StringBuilder stringBuilder = new StringBuilder();

       Formatter formatter = new Formatter(stringBuilder);

       formatter.format("Pi is approximately " + format +

         ", and e is about " + format, Math.PI, Math.E);

       System.out.println(stringBuilder);

     }

   }

 

//控制台调用

java format/UsingFormatter %f

//输出

Pi is approximately 3.141593, and e is about 2.718282

//控制台调用

java format/UsingFormatter %.2f

//输出

Pi is approximately 3.14, and e is about 2.72

//控制台调用

java format/UsingFormatter %6.2f

//输出(有空格来填补长度)

Pi is approximately   3.14, and e is about   2.72

//控制台调用

java format/UsingFormatter
 %1$.2f


//
输出


Pi is approximately 3.14, and e is about 3.14

 

//改变区域设置

package format;

 

   import java.util.Formatter;

   import java.util.Locale;

 

   public class UsingFormatter {

 

     public static void main(String[] args) {

       if (args.length != 1) {

         System.err.println("usage: " +

           "java format/UsingFormatter <format string>");

         System.exit(0);

       }

       String format = args[0];

 

       StringBuilder stringBuilder = new StringBuilder();

       Formatter formatter = new Formatter(stringBuilder,

                                   Locale.FRANCE);

       formatter.format("Pi is approximately " + format +

         ", and e is about " + format, Math.PI, Math.E);

       System.out.println(stringBuilder);

     }

   }

//控制台调用

java format/UsingFormatter %.2f

//输出

Pi is approximately 3,14, and e is about 2,72

 

//采用format,printf的可替代写法

package format;

 

   public class UsingSystemOut {

 

     public static void main(String[] args) {

       if (args.length != 1) {

         System.err.println("usage: " +

           "java format/UsingSystemOut <format string>");

         System.exit(0);

       }

       String format = args[0];

 

       System.out.format("Pi is approximately " + format +

         ", and e is approximately " + format, Math.PI, Math.E);

     }

   }

//控制台调用

java format/UsingSystemOut %.2f%n

//输出

Pi is approximately 3.14

   , and e is about 2.72

 
对时间的格式化用字母t来代表,通常在t后面加上特殊的字符来显示时间的某个部分:
tr  hour and minute,

tA
  the day of the week

tB
  the name of the month

te
  the number of the day of the month

tY
  the year

//eg.

package format;

 

   import java.util.Calendar;

 

   public class FormattingDates  {

 

     public static void main(String[] args) {

       System.out.printf("Right now it is %tr on " +

                         "%<tA, %<tB %<te, %<tY.%n",

                         Calendar.getInstance());

     }

   }

//说明:“<”指示采用的参数为前一个被格式化的参数

//输出

Right now it is 01:55:19 PM on Wednesday, September 22, 2004.

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息