为什么不能通过System.out.println(passwd)打印密码?密码是通过Console.readPasswd()获取的

时间:2019-03-29 09:15:40

标签: java console

我通过Console.readPasswd()获得了一个密码。当我将其保存在char数组(char [] passwd)中并使用System.out.println(passwd)时,结果是

enter image description here

我输入的是“ 123”。

import java.io.Console;

public class ConsoleTest1 {

    public static void main(String[] args){
        Console console = System.console();
        String username = console.readLine("user name :");
        System.out.println("user name ="+username);
        char[] password = console.readPassword("passwd:");
        System.out.println("password="+password);
    }
}

但是在将passwd保存为String passwd时(我不建议这样做)

import java.io.Console;

public class ConsoleTest1 {

    public static void main(String[] args){
        Console console = System.console();
        String username = console.readLine("user name :");
        System.out.println("user name ="+username);
        String password = new String(console.readPassword("passwd:"));
        System.out.println("password="+ password);
    }
}

可以准确打印:

enter image description here

为什么?

1 个答案:

答案 0 :(得分:0)

直接使用"a"打印char数组将打印数组的对象表示形式,因此将打印java -jar -Dspring.config.location=/path/to/my/file.properties app.jar
实际上,即使该表示形式也告诉您这是一个char数组,因为前缀为System.out.println[C@232204a1表示打印对象是一个数组,类型为[C,字符有关更多信息,请see

您需要将其转换为字符串,就像在您发布的第二个示例中一样,以使其具有人类可读格式(忽略所有应该的问题,使其成为人类可读格式。