java printin_java的print,printf,println以及输入

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

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

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

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

看一下他们的效果:

print:

4+4n+8ftuDhdnZ3AGAVr+o1DNMoZwEAe0SDA1HCAgB2eg0OhIUqRSsANMCpLQAwQbwCgAniFQBMEK8AYIJ4BQATxCsAmPgLLiyWg6VUXQMAAAAASUVORK5CYII=

结果:

c8AlqT996GwAAAABJRU5ErkJggg==

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

println:

cIAAAAAAAAAAAAAcF2PaZqm6Z3689FhOAA38+ffmLsIxwB8VriCeRGIAQAAAAAAAAAAAAAAAAAAAAAAAE7vP1cFY1C1ZRUDAAAAAElFTkSuQmCC

结果:

3YKUgTcuVTOxJiiPw8ThhxnmJIwJxbGWJnweh7FG3bdu7U0Cz8aEBnOPXu58nvq14Zx74ZP8AljP1+H4Qd8IAAAAASUVORK5CYII=

可以看到,每次执行完println之后,光标都会自动定位到下一行。

看看《Head First Java》怎样区别它们的?

8HL3i3vgUbVroAAAAASUVORK5CYII=

还是很好区分的。

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

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

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

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

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

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

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

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

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

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

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

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

t10IhHlpzBQAAAABJRU5ErkJggg==

举几个具体的例子展示一下java的各种格式化的输出:

1 public classTest{2 public static voidmain(String[] args) {3 int i = 10;4 float f = 10.0f;5 double d = 10.0;6 System.out.printf("%d %#o %#x \n", i, i, i);//你可以去掉#号试试效果

7 System.out.printf("%e %f %g %a \n", f, f, f,f);8 System.out.printf("%e %f %g %a \n", d, d, d,d);9 }10 }

看看效果:

BKQUCDZVxY4AAAAASUVORK5CYII=

下边举个错误的例子:

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

看看会出现什么错误:

A8uLQ6X+C06eQAAAABJRU5ErkJggg==

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

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

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

1 importjava.util.Scanner;2 public classTest{3 public static voidmain(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 }

0W3F+MxyUsazgnLHCRx6O07gkDIIHFIGgUPKIHBIGQQOKYPAIWUQOKQMAoeUQeCQMggcUgaBQ8ogcEgZBA4pg8D5H2PAKw7DnfcLAAAAAElFTkSuQmCC

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

importjava.util.Scanner;public classTest{public static voidmain(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");

}

}

看结果:

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

好啦,今天就写这么多。

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

2Q==

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值