为什么从对象JPasswordField和char[]返回getPassword()



我正在写一个小程序来测试Java的安全性。

public char[] getPW(){
    return pwField.getPassword();
}

这个方法返回一个字符数组。但为什么会这样呢?背后有什么具体的想法吗?为什么它不返回一个字符串?

好吧。关键是,字符串的生命周期有点特殊。所有字符串都存储在字符串池中。当引用丢失(解引用)时,例如当您说String = null;时,字符串在内部字符串池中仍然存活(并且可以以一种我不知道的方式访问)。这就是密码存储在char[]中的原因。因为这些对象是"正常的"

最新更新