关键词

java的Console类的使用方法及实例

Java的Console类的使用方法及实例

什么是Console类?

Java的java.io.Console类是用于读取控制台输入的类。在Java SE 5以前,读取控制台输入一般是使用System.inScanner类来实现的。但是这两种方式都有一些不足之处。使用System.in缺乏一些高级特性,比如输入密码时隐藏用户输入的内容;而使用Scanner类需要把控制台输入的内容全部读入到内存中,当输入的内容较多时,会造成内存组塞或者卡顿。而Java SE 6推出的Console类可以解决上述问题。

如何使用Console类

使用Console类,需要先创建这个类的实例。使用System.console()方法获取Console实例。如果在Eclipse中运行代码,则System.console()可能返回null。可以使用System.inScanner作为备用方案,以保障代码的可靠性。

要使用Console类读取控制台输入,可以使用readLine()方法读取一行字符串,或者使用readPassword()方法来读取一行密码。同时,它还提供了一些其它实用方法,比如readLine()会根据输入的内容自动转换为相应的基本数据类型。

下面是几个示例,通过这些示例可以更好地理解Console类的使用方法。

Console类读取控制台输入示例

import java.io.Console;

public class ConsoleDemo {
    public static void main(String[] args) {
        Console console = System.console();
        if (console == null) {
            System.out.println("无法使用控制台输入,使用Scanner代替...");
            Scanner scanner = new Scanner(System.in);
            String str = scanner.next();
            System.out.println("您输入的内容是:" + str);
        } else {
            String str = console.readLine("请输入字符串:");
            System.out.println("您输入的内容是:" + str);
        }
    }
}

运行示例代码,输入一个字符串,程序会将输入的内容打印出来。

在上述示例代码中,首先获取控制台输入实例,并判断是否可以使用控制台输入。如果无法使用,则使用Scanner作为备选方案。取得控制台实例后,即可使用readLine()方法读取一行字符串。

Console类读取密码示例

在实际应用中,有时候需要读取用户输入的敏感信息,比如密码。深入理解Console类之后,我们已经可以通过readPassword()方法来读取密码了。

import java.io.Console;
import java.util.Arrays;

public class PasswordDemo {
    public static void main(String[] args) {
        Console console = System.console();
        if (console == null) {
            System.out.println("无法使用控制台输入,使用Scanner代替...");
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入密码:");
            String str = scanner.next();
            System.out.println("您输入的密码是:" + str);
        } else {
            char[] passwordArray = console.readPassword("请输入密码:");
            System.out.println("您输入的密码是:" + new String(passwordArray));
            Arrays.fill(passwordArray, ' ');//清空字符数组中的敏感信息
        }
    }
}

在上述示例代码中,首先获取控制台输入实例,并判断是否可以使用控制台输入。如果无法使用,则使用Scanner作为备选方案。取得控制台实例后,即可使用readPassword()方法读取一行密码。返回的是一个字符数组,我们可以将其转化为字符串,但同时需要注意清空字符数组中的敏感信息。

本文链接:http://task.lmcjl.com/news/13020.html

展开阅读全文