Java 7 Java控制台:readPassord()-密码的大小/长度

Java 7 Java控制台:readPassord()-密码的大小/长度,java-7,Java 7,我试图理解java控制台类及其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

我试图理解java控制台类及其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);
}
}
导入java.io.Console;
公共类新控制台{
公共静态void main(字符串[]args){
Console c=System.Console();
char[]pw=新字符[2];
char[]str=c.readPassword(“%s”,“pw:”);
对于(int i=0;i
pw
不再是大小为2的字符数组,您可以重新分配
pw