我正在写一个小程序来测试Java的安全性。
public char[] getPW(){
return pwField.getPassword();
}
这个方法返回一个字符数组。但为什么会这样呢?背后有什么具体的想法吗?为什么它不返回一个字符串?
好吧。关键是,字符串的生命周期有点特殊。所有字符串都存储在字符串池中。当引用丢失(解引用)时,例如当您说String = null;
时,字符串在内部字符串池中仍然存活(并且可以以一种我不知道的方式访问)。这就是密码存储在char[]中的原因。因为这些对象是"正常的"