
4-9 数据的转换与输入
其实我们还没有进入Java的核心,但是在说明程序时又需使用几个简单的工具,所以在此先介绍如何使用一些有用的工具,后面进入核心时,读者自然可以理解这些工具的使用原理。
4-9-1 将整数转成字符串方式输出
在3-2-1节使用printf()格式化输出时,读者应该注意到可以格式化整数以八进制、十六进制输出,可是却无法格式化为二进制输出。在Java中如果想以二进制方式输出,可以使用将整数转为字符串的方法。

其实Java也可以使用将整数转成八进制或十六进制字符串输出,方法如下。

程序实例ch4_42.java:将整数转为字符串输出的应用。

执行结果

4-9-2 屏幕输入
目前所有的程序都是在程序中设置数据值,比较不灵活。其实Java的屏幕输入比较复杂,在此先用简单的方式讲解屏幕输入,读者只要会用即可,后面章节再讲解更多这方面的知识。
在Java输出时是使用System.out,System是java.lang包(package)下的层级的类别。输入可以使用System.in,这是与键盘有关的标准输入流,主要是读取使用者的输入然后传递给Scanner对象。

使用的时候要用import将java.util名称Scanner导入程序的名称空间,之后则可以在程序内直接以类名称引用,在程序中直接使用的类名又称为简名。例如,以此例而言,以后程序可以使用Scanner作识别,不需要加上java.util,这样可以简化程序的书写,Scanner就是简名。下一节还会有程序实例做说明。import有两种使用方式,一是引入单一类名,另一是依需求引入包名相当于是引入程序内需求的包类名。下列是引入单一类名。

有时候可以看到有些程序设计师或有些书籍使用下列方式引入此类,这也是可以的,这种概念称为依需求引入类名。

第19章会针对包的概念做一个完整的说明,另外使用前要先声明Scanner对象,如下所示。

经上述声明后,基本输入流程概念图如下,以后可以用下列方法读取屏幕输入。


如果读取的数据多于一条,各条数据间可用空格符或Tab字符隔开。
程序实例ch4_43.java:请输入两个数字,程序将列出数字的和。

执行结果

上述程序第7行的println()会使光标移至下一行读取数据,可以使用print(),此时可以让光标保持在同一行供输入。下列是标准输入流程概念。

程序实例ch4_44.java:程序第7行使用print()取代println()。

执行结果

程序实例ch4_45.java:读取字符串数据的应用。

执行结果
