你的位置:首页 > Java教程

[Java教程]java的print,printf,println以及输入


java中有三种方式向控制台输入信息,分别是print,printf,println,现在简单介绍一下他们之间的异同。

  • printf主要是继承了C语言的printf的一些特性,可以进行格式化输出
  • print就是一般的标准输出,但是不换行
  • println和print基本没什么差别,就是最后会换行

看一下他们的效果:


 

print:

结果:

 

从结果中可以明显看到,print输出内容之后,不会换行,光标定到最后一个字符之后。


 

 println:

结果:

还是很好区分的。


 

如果你学过c语言,对printf应该很是了解啦,我在这里再重复一遍。

什么是格式化输出呢?格式化输出就是向指定的地方(如:屏幕)输出指定格式的内容。

不同的语言对数据的格式化的表达形式稍微有点差别,java中一些数据的格式化形式:

'd' 整数 结果被格式化为十进制整数
'o' 整数 结果被格式化为八进制整数
'x', 'X' 整数 结果被格式化为十六进制整数
'e', 'E' 浮点 结果被格式化为用计算机科学记数法表示的十进制数
'f' 浮点 结果被格式化为十进制数
'g', 'G' 浮点 根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。
'a', 'A' 浮点 结果被格式化为带有效位数和指数的十六进制浮点数

第一种的颜色是之适用整形,红色只适应浮点型,我为什么说这个呢?在c语言中能自动强制类型转换,所以,类型不对,程序也能正常运行,但在java中,类型不对程序就不能运行。我会在后边举例的。

再给从c语言阵营的一个小提醒:float 数据后必须跟 “f”,否则java会把数据看成double类型。


 

看看效果:

下边举个错误的例子:

1 public class Test{2     public static void main(String[] args) {3         int i = 10;4         System.out.printf("%e \n",i);5     }6 }

 

看看会出现什么错误:

不合法类型转换异常,所以,写程序时要对号入座啊。

 

print, printf, println就说这么多啦,下边介绍一下从从控制台输入数据的方式,以后会在IO输入/输出时再详细介绍java的输入。

输出我们用的是System.out,那么又没有System.in呢?哈哈,有是有,但System.in只能获取字节,我们要想获得数字和字符串直接调用System.in是不能实现的,如果可以,你可以自己写个类封装一下System.in,实现获取数字与字符串的接口。你可能已经想到啦,java已经提供了这样的类:Scanner,你可以通过Scanner对象获取各种数据。

1 import java.util.Scanner;2 public class Test{3     public static void main(String[] args) {        4         Scanner s = new Scanner(System.in);//System.in作为Scanner构造函数的参数5         System.out.println(s.nextLine());//nextLine获取输入的数据直到遇见回车键,回车键也会接受6         System.out.println("over");  7     }8 }

 

一定要注意那个注释部分回车键也会接受,否则会进入到一个小坑里呦,举个例子:

import java.util.Scanner;public class Test{    public static void main(String[] args) {                Scanner s = new Scanner(System.in);//System.in作为Scanner构造函数的参数                int i = s.nextInt();        System.out.println(i);                System.out.println("please input a word:");//输入一个单词        String str = s.nextLine();        System.out.println(str);                System.out.println("over");            }}

 

看结果:

没有输入单词程序就结束啦,为什么呢?当你输入“100”数字时,敲回车结束,nextInt()函数不会接受回车键,但nextLine会接受缓存区里的数据和回车键,此时缓存区有个回车键,所以nextLine()接收了回车键,如果缓存区是空的会让你输入内容,所以,你应该明白了为什么你没有输入程序就结束了的原因了吧。


 

好啦,今天就写这么多。

我很想用心打造精品,但限于知识和语言表达能力,其中必有很多不足,望大家海涵啊。