Java console: readPassord()- size/length 密码

Java console: readPassord()- size/length of the password

我正在尝试了解 java 控制台 class 及其 readPassword 方法。以下是我的代码,

package com.files; 
import java.io.Console; 
public class NewConsole {   
public static void main(String[] args) {
        Console c = System.console(); 
        char[] pw=new char[2];
        pw = c.readPassword("%s", "pw: ");
        System.out.println(pw);     
}
}

pw 是大小为 2 的字符数组。但是当执行上面的程序时,如果我在 cmd 中输入 pw 作为 "abcd"(> 比 pw 的数组大小)它工作正常。当输入的大小超过 pw 的大小时,为什么它不将索引抛出异常?

观看下面的代码,您可以弄清楚这里发生了什么您正在将新的字符序列分配给 pw[]

import java.io.Console;
public class NewConsole {
public static void main(String[] args) {
    Console c = System.console();
    char[] pw=new char[2];
    char [] nw = "hello".toCharArray();
    System.out.println(pw.length);
    pw = nw;
    System.out.println(pw.length);
}
}

而且如果你想抛出 ArrayIndexOutOfBoundsException 然后尝试

import java.io.Console;
public class NewConsole {
public static void main(String[] args) {
    Console c = System.console();
    char[] pw=new char[2];
    char [] str = c.readPassword("%s", "pw: ");
    for(int i=0;i<str.length;i++)
    pw [i] = str[i];
    System.out.println(pw);
}
}

;-) 如果您发现发生了什么,请关闭问题