zoukankan      html  css  js  c++  java
  • java中printprintlnprintf的区别

    printprintlnprintf的区别

    print将它的参数显示在命令窗口,并将输出光标定位在所显示的最后一个字符之后。

    println 将它的参数显示在命令窗口,并在结尾加上换行符,将输出光标定位在下一行的开始。

    printf是格式化输出的形式。

    下在举个例子:

    package other;

    public class TestPrint {

    public static void main(String[] args) {

       int i = 4;

       double j = 5;

       System.out.print("用print输出i:"+ i);

       System.out.println( "用println输出i:"+ i);

       System.out.printf("i的值为%d,j的值为%f", i,j);

    }

    }

    运行结果为

    用print输出i:4用println输出i:4

    i的值为4,j的值为5.000000

    可以看到,用print输出i后,没有换行,用println输出的结果直接在print输出语句后面,而输出println后换行了,所以用printf输出时,在第二行

    输出。

    我们再来看printf

    “i的值为%d,j的值为%f”这个字符串中的"%d"变为i的值了,而"%f"变为了j的值了!

    这里,"%d"的意思是一个int值的占位符,"%f"为一个double 或float值的点位符,这个变量的参数在后面提供。注意的是实参名必须按顺序排

    。不然就会错了。而且类型也要相符。如果我们把语句改为

    System.out.printf("i的值为%d,j的值为%f", j,i);//i和j位置反了

    这时就有错了因为"%d"对应的参数变为j,"%f"对应的变为i了,而j是double的,与"%d"是int形的不一致。所以有错了。

    还有"%s"是一个字符串值的点位符的意思。"%c"是一个字符值的点位符的意思。

    可能读者还会问为什么j输出变成了5.000000?那是因为double是默认有6位小数的(这个可能和系统电脑有关,有的不是6位吧)但是如果你想

    只要输出两位小数行不行?可以啊!只要改下语句就行了!

    System.out.printf("i的值为%d,j的值为%.2f", i,j);

    这里的"%.2f"的意思是输出两位小数点。如果想输出三位那就"%.3f"。

    说到这里你会发现原来printf也很有用的。这样可以控制输出的格式。

    再学多点知识吧,将代码改为以下:

    public class TestPrint {

    public static void main(String[] args) {

       int i = 4;

       double j = 5.000f;

       System.out.printf("i的值为%5d, ", i);

       System.out.printf("i的值为%3d,j的值为%.2f", i,j); 

    }

    }

    运行结果为:

    i的值为    4,

    i的值为 4,j的值为5.00

    原来在"%"与"d"之间加个数5的意思是输出5个占位符。默认向右对齐。这样的输出是很有用的,比如你想输出一个表格,因各个数大小不一,有的5位有的4位,这样输出的的表格结果就对不齐了。如果将输出结果全部为同一样的占位符数。那样就对齐了。呵呵。

    除了"%d"可以这样外,别的也可以,读者不防试试。会有很多收获的。

    我们再试着将代码改一下:

    public class TestPrint {

    public static void main(String[] args) {

       int i = 4;

       double j = 5.000f;

       System.out.printf("i的值为%05d, ", i);

    }

    }

    运行结果为:

    i的值为00004,

    哈哈,原来"%05d"的意思是输出5个占位符,如果数字不足5的话就有左边以0相补

  • 相关阅读:
    箭头函数1
    变量结构赋值
    警惕32位程序在MethodImplOptions.Synchronized在x64机器上的同步缺陷[z]
    ListView的BeginUpdate()和EndUpdate()作用[z]
    如何用命令将本地项目上传到git[z]
    C# 两个datatable中的数据快速比较返回交集或差集[z]
    C# DataTable抽取Distinct数据(不重复数据)[z]
    【Thread】CountdownEvent任务并行[z]
    C#多线程--信号量(Semaphore)[z]
    VS2015一新建项目就出现未将对象引用设置到对象的实例怎么办?[z]
  • 原文地址:https://www.cnblogs.com/zhao123/p/3616119.html
Copyright © 2011-2022 走看看