您的位置:

Java控制台输出详解

一、基本语法

Java的控制台输出是通过System类的out对象实现的,而out对象是一个静态的成员变量,所以可以直接使用System.out调用。下面是控制台输出一个Hello World的例子:

public class OutputExample {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

其中println()方法表示输出一行,print()方法表示输出不换行。使用控制台输出时,可以使用转义字符来达到一些特殊的输出效果,例如:

System.out.println("姓名\t年龄\t性别");
System.out.println("张三\t18\t男");
System.out.println("李四\t20\t女");

输出结果为:

姓名    年龄    性别
张三    18      男
李四    20      女

其中“\t”表示制表符,可以将输出对齐。

二、格式化输出

除了使用转义字符进行输出格式的控制,还可以使用格式化输出的方法来控制控制台输出的格式。例如,我们可以使用printf()方法来控制输出字符串的格式。

下面是一个输出数字的例子:

int value = 1234567;
System.out.printf("Value is %d", value);

输出结果为:

Value is 1234567

其中的%d表示输出一个整数,而格式控制符还可以是%s(字符串)、%f(浮点数)、%c(字符)等等。

同时,还可以使用格式控制符来控制输出的精度或宽度,例如:

double pi = 3.141592653589793;
System.out.printf("pi = %.2f", pi);
System.out.printf("pi = %8.2f", pi);

第一句输出结果为:

pi = 3.14

其中%.2f表示输出浮点数,保留两位小数。第二句输出结果为:

pi =     3.14

其中%8.2f表示输出浮点数,保留两位小数,总宽度为8个字符,如果不够则使用空格来填充。

三、使用Logger进行输出

Java还提供了一个日志输出的功能,即Logger类。使用Logger类可以很方便地记录程序的运行情况、调试信息等等。 Logger类使用广泛的一个库是Log4j。

下面是一个使用Logger输出的例子:

import java.util.logging.Logger;

public class LoggerExample {
    
    private static final Logger LOGGER = Logger.getLogger(LoggerExample.class.getName());
    
    public static void main(String[] args) {
        LOGGER.info("Example of using logger in Java");
    }
}

输出结果为:

2月 28, 2020 8:21:36 上午 LoggerExample main
信息: Example of using logger in Java

其中的INFO表示输出的级别,级别依次为SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST,可按需设定。上例中使用的是默认的Formatter,也可以自定义Formatter。

四、控制台输入

在Java中,除了输出,还可以进行控制台输入。使用Scanner类可以方便地读取用户输入的数据。

下面是一个读取用户输入名字的例子:

import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入您的名字:");
        String name = scanner.nextLine();
        System.out.println("您好," + name);
    }
}

运行程序后,会等待用户输入名字,输入后回车即可完成输入,输出结果为:

请输入您的名字:张三
您好,张三

除了nextLine()方法外,Scanner类还提供了nextInt()、nextDouble()等方法,可以读取相应类型的数据。