【JAVA零基础入门系列】Day7 Java输入与输出

  本篇主要介绍Java的输入与输出,当然,这里说的是控制台下的输入与输出,窗口程序的设计将会再后续篇章中有详细说明。  

  Java的输出很简单,调用System.out.println()即可打印输出你想要输出的内容。我们之前也已经看到过。调用println()方法时,会自动在后面加上换行符,如果不希望它加换行符的话,就要使用print()方法了,之后的打印输出会紧跟其后,而不是另起一行。另外,还有一个很常用的方法,那就是printf(),学过C或者C++的话,对这个printf()应该很熟悉,没错 ,在Java里几乎是一模一样的。可以用来格式化输出内容。第一个参数代表格式,格式中会有一个或者多个转换符,后续参数代表替换内容,用于替换转换符。说这么多也没用,直接上代码。

package pers.frank.test;

import java.util.Date;

public class Test{

    public static void main(String[] args) {
        /*** 输出字符串 ***/
        // %s表示输出字符串,也就是将后面的字符串替换模式中的%s
        System.out.printf("%s", new Integer(1212));
        // %n表示换行
        System.out.printf("%s%n", "end line");
        // 还可以支持多个参数
        System.out.printf("%s = %s%n", "Name", "Zhangsan");
        // %S将字符串以大写形式输出
        System.out.printf("%S = %s%n", "Name", "Zhangsan");
        // 支持多个参数时,可以在%s之间插入变量编号,1$表示第一个字符串,3$表示第3个字符串
        System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");

        /*** 输出boolean类型 ***/
        System.out.printf("true = %b; false = ", true);
        System.out.printf("%b%n", false);

        /*** 输出整数类型***/
        Integer iObj = 342;
        // %d表示将整数格式化为10进制整数
        System.out.printf("%d; %d; %d%n", -500, 2343L, iObj);
        // %o表示将整数格式化为8进制整数
        System.out.printf("%o; %o; %o%n", -500, 2343L, iObj);
        // %x表示将整数格式化为16进制整数
        System.out.printf("%x; %x; %x%n", -500, 2343L, iObj);
        // %X表示将整数格式化为16进制整数,并且字母变成大写形式
        System.out.printf("%X; %X; %X%n", -500, 2343L, iObj);

        /*** 输出浮点类型***/
        Double dObj = 45.6d;
        // %e表示以科学技术法输出浮点数
        System.out.printf("%e; %e; %e%n", -756.403f, 7464.232641d, dObj);
        // %E表示以科学技术法输出浮点数,并且为大写形式
        System.out.printf("%E; %E; %E%n", -756.403f, 7464.232641d, dObj);
        // %f表示以十进制格式化输出浮点数
        System.out.printf("%f; %f; %f%n", -756.403f, 7464.232641d, dObj);
        // 还可以限制小数点后的位数
        System.out.printf("%.1f; %.3f; %f%n", -756.403f, 7464.232641d, dObj);

        /*** 输出日期类型***/
        // %t表示格式化日期时间类型,%T是时间日期的大写形式,在%t之后用特定的字母表示不同的输出格式
        Date date = new Date();
        long dataL = date.getTime();
        // 格式化年月日
        // %t之后用y表示输出日期的年份(2位数的年,如99)
        // %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号
        System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
        // %t之后用Y表示输出日期的年份(4位数的年),
        // %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称
        System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);

        // 以下是常见的日期组合
        // %t之后用D表示以 "%tm/%td/%ty"格式化日期
        System.out.printf("%1$tD%n", date);
        //%t之后用F表示以"%tY-%tm-%td"格式化日期
        System.out.printf("%1$tF%n", date);

        /*** 输出时间类型***/
        // 输出时分秒
        // %t之后用H表示输出时间的时(24进制),%t之后用I表示输出时间的时(12进制),
        // %t之后用M表示输出时间的分,%t之后用S表示输出时间的秒
        System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
        // %t之后用L表示输出时间的秒中的毫秒
        System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
        // %t之后p表示输出时间的上午或下午信息
        System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);

        // 以下是常见的时间组合
        // %t之后用R表示以"%tH:%tM"格式化时间
        System.out.printf("%1$tR%n", date);
        // %t之后用T表示以"%tH:%tM:%tS"格式化时间
        System.out.printf("%1$tT%n", date);
        // %t之后用r表示以"%tI:%tM:%tS %Tp"格式化时间
        System.out.printf("%1$tr%n", date);

        /*** 输出星期***/
        // %t之后用A表示得到星期几的全称
        System.out.printf("%1$tF %1$tA%n", date);
        // %t之后用a表示得到星期几的简称
        System.out.printf("%1$tF %1$ta%n", date);

        // 输出时间日期的完整信息
        System.out.printf("%1$tc%n", date);
    }
}

  好的,这其实是摘别人的代码(溜了溜了)。

image.png

  这里包括了大部分的输出格式,多码几次的话就会使用了。还是那句话,不需要全记住,只需要有一个概念,知道可以实现这样的效果,到时候要用了再来查一查也不迟,之后熟能生巧嘛。

image.png

  String类型中,format方法的用法跟这完全一样,只是不会输出到控制台,而是处理字符串后用于后续代码中。

  Java里的输入也不难,但是比输出要稍微麻烦一点,需要先构造一个Scanner对象,然后关联System.in、看代码:

package pers.frank.test;

import java.util.Scanner;

public class Test{

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("What's your name?");
        String name = in.nextLine();
        System.out.printf("Hello!%s!How old are you?",name);
        int age = in.nextInt();
        System.out.printf("So, you are %d years old.",age);
    }
}

  当调用nextline()方法时,程序会暂停,直到你输入数据并按下回车键。然后把你输入的那一行数据作为结果返回。nextline读入的是一行字符串,而nextInt()方法则期待读入一个整数。如果输入的不是一个整数,就会报错。除了这两个方法以外,还有next()方法,读入一个单词。nextDouble(),读入一个浮点数,hasNext()判断输入中是否还有其他单词,hasNextInt() hasNextDouble() 判断释放还有表示整数或者浮点数。

   除了从控制台读取输入之外,还可以从文件中读取。

  Scanner in = new Scanner(Path.get("myfile.txt"));

  如果文件名包含反斜杠,则需要在反斜杠之前再加一个额外的反斜杠:“c:\\windows\\text.txt”

  如果文件不存在,则会创建文件,可以像输出到System.out一样使用print、println、以及printf方法。

  文件读写在之后的栗子中会有详细介绍,这里暂不多说。

  至此,本篇内容就结束了,欢迎大家继续关注!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿人谷

【Objective-C】05-第一个OC的类

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,...

224100
来自专栏Bug生活2048

Python自学之路-内置函数说明及实例(二)

这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。

14910
来自专栏程序员互动联盟

【编程基础】如何赢得C++面试

1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应的是free,free只会释放内存,new调用构造函数。m...

40270
来自专栏Web行业观察

一张图撸明白prototype原型链

expression instanceof class expression和class都是必选项。

34240
来自专栏破晓之歌

JAVA入门1 原

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848...

15420
来自专栏web前端

Vuejs --04 计算属性

一、使用原因      1、模板中表达式很便利,但实际上只适用于简单的运算,不适宜放入太多逻辑运算,例如: <div id="example"> {{ mess...

21170
来自专栏我的技术专栏

漫谈C++:良好的编程习惯与编程要点

13570
来自专栏debugeeker的专栏

《coredump问题原理探究》Linux x86版6.8节多继承coredump例子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

7620
来自专栏javathings

String 对象创建方式有哪几种?有什么区别?

两种方法有些区别。 第一种方法,仅仅是一个赋值语句,在创建的时候,JVM 会检查在字符串池中,是否已经存在该字符串,如果已经存在了,那么会返回这个字符串的引用...

36030
来自专栏塔奇克马敲代码

第 12 章 动态内存

17840

扫码关注云+社区

领取腾讯云代金券