如果想在控制台上获取输入的字符直接用Scanner类就行了,但是不适合用来输入密码。如果想要输入密码,可以通过System.console()静态方法获取Console实例,Console提供一下几个方法来获取用户输入:

// 不带提示词
public String readLine(){...}
public char[] readPassword() {...}
// 带有提示词
public String readLine(String fmt, Object ... args){...}
public char[] readPassword(String fmt, Object ... args) {...}

注意:这些方法只能在控制台中使用,不能在IDE中使用,否则会抛出java.lang.NullPointerException异常。

实例:

import java.io.Console;

public class Main{
    public static void main(String[] args) {
        Console console = System.console();
        if (console != null) {
            String username = console.readLine("Username: ");
            char[] password = console.readPassword("Password: ");
            System.out.printf("Hello, %s!\nYour password is %s%n", username, new String(password));
        }else {
            System.out.println("No console");
        }
    }
}