![Java王者归来:从入门迈向高手](https://wfqqreader-1252317822.image.myqcloud.com/cover/394/27563394/b_27563394.jpg)
4-9 数据的转换与输入
其实我们还没有进入Java的核心,但是在说明程序时又需使用几个简单的工具,所以在此先介绍如何使用一些有用的工具,后面进入核心时,读者自然可以理解这些工具的使用原理。
4-9-1 将整数转成字符串方式输出
在3-2-1节使用printf()格式化输出时,读者应该注意到可以格式化整数以八进制、十六进制输出,可是却无法格式化为二进制输出。在Java中如果想以二进制方式输出,可以使用将整数转为字符串的方法。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P62_758022.jpg?sign=1739253008-Obbx2IXQw24lnJQOYJn6R3qQllBhO6KQ-0-dd73c5d801211ba6b1feb704976e1c8c)
其实Java也可以使用将整数转成八进制或十六进制字符串输出,方法如下。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P62_758024.jpg?sign=1739253008-KxLEKk3Hx1n3o0CzHQplRG5vEvz4pgBV-0-e55febdb3d21d155a2ef6676e179d1ce)
程序实例ch4_42.java:将整数转为字符串输出的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P62_758020.jpg?sign=1739253008-ZnuirlsVmoJCAfxrWVdshhBEoL8Jyadk-0-6414de61517292a7e6facb0fc7e78151)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P62_533719.jpg?sign=1739253008-S7m0kj8Y89JNDkvMefhJUN4QqZCZqFeS-0-6e9e96571537f745d4b21b605dab3f8f)
4-9-2 屏幕输入
目前所有的程序都是在程序中设置数据值,比较不灵活。其实Java的屏幕输入比较复杂,在此先用简单的方式讲解屏幕输入,读者只要会用即可,后面章节再讲解更多这方面的知识。
在Java输出时是使用System.out,System是java.lang包(package)下的层级的类别。输入可以使用System.in,这是与键盘有关的标准输入流,主要是读取使用者的输入然后传递给Scanner对象。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P62_533723.jpg?sign=1739253008-aDcNyQuEDGQSZMvN7Z8EQbKG6FJEu4Bm-0-d5c97a565d4f606b48658c8acc37bb2d)
使用的时候要用import将java.util名称Scanner导入程序的名称空间,之后则可以在程序内直接以类名称引用,在程序中直接使用的类名又称为简名。例如,以此例而言,以后程序可以使用Scanner作识别,不需要加上java.util,这样可以简化程序的书写,Scanner就是简名。下一节还会有程序实例做说明。import有两种使用方式,一是引入单一类名,另一是依需求引入包名相当于是引入程序内需求的包类名。下列是引入单一类名。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_758034.jpg?sign=1739253008-DPtH12cX57l1IVjljN4i73ElxJHAY7TE-0-9d77dd4abb9d0a63d69778de027ac5ce)
有时候可以看到有些程序设计师或有些书籍使用下列方式引入此类,这也是可以的,这种概念称为依需求引入类名。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_758030.jpg?sign=1739253008-CoYjaHI66sRbfNqX40lfbITEg09jIu0T-0-c858cc526a9508e145162de563e22800)
第19章会针对包的概念做一个完整的说明,另外使用前要先声明Scanner对象,如下所示。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_758032.jpg?sign=1739253008-xk290R7YWsIYrvuDY6SG6QcHskfYEWkP-0-aea086cec6ca0f643e2dd329810cf941)
经上述声明后,基本输入流程概念图如下,以后可以用下列方法读取屏幕输入。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_534165.jpg?sign=1739253008-1szownH60QiCoa4Su9GfPYYDqdIobJh2-0-91f998ca90764f8275486baf72bda58f)
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_758038.jpg?sign=1739253008-bzZvvNbCjXt5X57vMCyiwQdb1w1ZVoj0-0-ae0b5508a48c7100078cc67d719a293b)
如果读取的数据多于一条,各条数据间可用空格符或Tab字符隔开。
程序实例ch4_43.java:请输入两个数字,程序将列出数字的和。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_534168.jpg?sign=1739253008-nzzAnKYtF1pf8G7QIcdP9f8BD9Np2PA4-0-6c2ccbaac905c05eb93c380e3ff0b12d)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_534174.jpg?sign=1739253008-902NWaG7gHjg9zRj5q5bAxBrzS7wAGTD-0-fbf057b563ad0df56a2611ad6deedaa4)
上述程序第7行的println()会使光标移至下一行读取数据,可以使用print(),此时可以让光标保持在同一行供输入。下列是标准输入流程概念。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P63_534177.jpg?sign=1739253008-068XRIGS77JpS5qraZSOXT0ooRGRfQGQ-0-f709c912847540bcb3948cc9bb32ef8d)
程序实例ch4_44.java:程序第7行使用print()取代println()。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P64_758049.jpg?sign=1739253008-4WPV6a8ythgPwMPjy8C25jZYGaEo84YL-0-139f249ac1306126c5f16d0bc31b228c)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P64_534591.jpg?sign=1739253008-LVgco8cxAJ0E5NRRqjwPCREvhY8rRhOn-0-5239c8113261756f6de85776ce1da226)
程序实例ch4_45.java:读取字符串数据的应用。
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P64_534594.jpg?sign=1739253008-dBSLLLP8evqRvL7wNVoW37e4FVM9XIgK-0-90ed91746c9835d7623c9f8fd8512eb0)
执行结果
![](https://epubservercos.yuewen.com/9E44AA/15825993204148006/epubprivate/OEBPS/Images/Figure-P64_534627.jpg?sign=1739253008-E5G3rh5B5vMJMvTvpzHqRayxKBoB4yYk-0-f47e65f101ca030ae4586b2979634ca4)