介绍下java printf方法  举个例子

解决方案 »

  1.   


    import java.util.Date;
    public class Tprintf {
        public static void main(String args[]){
            //先看简单的,格式化输出,不指定索引,即按顺序索引
            System.out.printf("顺序输出一些数:%d %f %b %c %s\n",10,20.0,true,'哈',"这是一个字符串");
            //其实,格式化字符的目的,是让其按一定格式显示
            int b[][]={
                {12,2323,32},
                {133,23,101},
                {0,1,2}
            };
            System.out.println("下面先不定格式显示数组b");
            for(int i=0;i<b.length;i++){
                for(int j=0;j<b[i].length;j++){
                    System.out.print(b[i][j]+"  ");
                }
                System.out.println();
            }
            System.out.println("有没有发现,由于数大小不一,很不整齐");
            System.out.println("下面整齐显示,这要靠设置yu宽,这里默认用空格填充");
            for(int i=0;i<b.length;i++){
                for(int j=0;j<b[i].length;j++){
                    System.out.printf("%5d",b[i][j]);
                }
                System.out.println();
            }
            System.out.println("呵呵,这是右对齐,用空格填充");
            System.out.println("下面来谈索引,之前输出,一个格式对应一个参数,是按顺序对应的,下面看看指定索引的效果");
            System.out.printf("%1$d %2$d %3$d\n",1,2,3);//这句等于没打,还是按顺序输出,嘿嘿
            System.out.printf("%3$d %2$d %1$d\n",1,2,3);//倒序
            System.out.printf("%1$d %1$d %1$d\n", 10);//这时,多个索引都指向一个参数,一会儿你就知道,这有时很有必要
            System.out.println("下面说说那个复杂的日期\n现在用Date这个类");
            long time=(new Date()).getTime();//这样,time这个long型值里面记录的是1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
            //然而,格式化字符可以输出这个值的信息,如年,月,日,星期,时,分秒
            //有的参数一次只输出一个信息,如时
            //有的参数一次输出一批,比如:时分秒
            //所以,这些格式都要指定一个参数,就是time,现在你知道多个格式指定一个参数的必要了吧,嘿嘿
            //对了,所有时间的格式,是以%t开头,后面接其他字母,具体说明,列出几个常用的
            //F:年-月-日
            //A:星期全称
            //H:小时(00-23)
            //M:分钟(00-59)
            //S:秒数(00-59)
            //唉,白打了,下面一行的输出效果,可以说明一切
            System.out.printf("当前时间:%tF %<tA %<tH:%<tM:%<tS \n",time);
        }
    }
      

  2.   

    System.out.printf("a");这样也可以这是java老的输出方式,从C语言printf转化而来,后来用print和println方法
      

  3.   

    楼上,不清楚别乱说,println和print这两种函数虽然学起来很简单,但是它们不具备格式化输出的能力。Java从1.5版本开始才具体格式化输出的功能,才有了printf这个函数。
    你可以从API文档中看出:(看最下一行)
    printf
    public PrintStream printf(String format,
                              Object... args)使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。 
    调用此方法的 out.printf(format, args) 形式,行为与以下调用完全相同:      out.format(format, args) 
    参数:
    format - 在格式字符串的语法中描述的格式字符串
    args - 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到《Java Virtual Machine Specification》定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion。 
    返回:
    此输出流 
    抛出: 
    IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。 
    NullPointerException - 如果 format 为 null
    从以下版本开始: 
    1.5