新闻中心> 文章详情

南京Java培训浅析Java中print、printf、println的区别

2016年05月23日

  以下是南京万和Java培训对Java中print、printf、println的区别进行了详细的分析介绍,需要的朋友可以过来参考下。


  printf主要是继承了C语言的printf的一些特性,可以进行格式化输出

  print就是一般的标准输出,但是不换行

  println和print基本没什么差别,就是最后会换行

  System.out.printf("the number is: d",t);


  参照JAVA API的定义如下:


  'd' 整数 结果被格式化为十进制整数

  'o' 整数 结果被格式化为八进制整数

  'x', 'X' 整数 结果被格式化为十六进制整数

  'e', 'E' 浮点 结果被格式化为用计算机科学记数法表示的十进制数

  'f' 浮点 结果被格式化为十进制数

  'g', 'G' 浮点 根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。

  'a', 'A' 浮点 结果被格式化为带有效位数和指数的十六进制浮点数

  println("test")相当于print("testn")就是一般的输出字符串


  printprintlnprintf的区别


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

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

  printf是格式化输出的形式。


  下面南京万和Java培训在举个例子:



  运行结果为

  用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值的点位符,这个变量的参数在后面提供。这里南京万和Java培训提醒大家注意的是实参名必须按顺序排。不然就会错了。而且类型也要相符。如果我们把语句改为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也很有用的。这样可以控制输出的格式。


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




  运行结果为:

  i的值为    4,

  i的值为 4,j的值为5.00


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


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


  南京万和Java培训再试着将代码改一下:



  运行结果为:

  i的值为00004,


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


  想和兴趣相投的朋友们一起交流吗?那就来江苏万和计算机培训中心吧。而江苏万和作为南京专业的Java培训中心,欢迎广大有志于此行业发展的学员们加入。

上一篇下一篇
按时发顺丰

技术交流群

Java大数据交流群560819979    加入
Python技术交流群595083299    加入
Oracle技术交流群595119011    加入
Web前端技术交流群604697610    加入
Huawei技术交流群482919361    加入
Redhat技术交流群587875348    加入
UI设计技术交流群511649801    加入
Cisco技术交流群596886705    加入
IT运维技术交流群605888381    加入