Java 为什么从对象JPasswordField返回getPassword()字符[]?

Java 为什么从对象JPasswordField返回getPassword()字符[]?,java,string,security,char,Java,String,Security,Char,我正在编写一个小程序来测试Java的安全性 public char[] getPW(){ return pwField.getPassword(); } 此方法返回一个字符数组。但为什么会这样呢?背后有什么具体的想法吗? 为什么它不返回字符串 嗯。关键是,字符串的生命周期有点特殊。 所有字符串都存储在字符串池中。当引用丢失时(取消引用),例如当您说String=null时该字符串在内部字符串池中仍然处于活动状态(并且可以以某种我不知道的方式进行访问)。这就是为什么密码存储在char[]

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

public char[] getPW(){
    return pwField.getPassword();
}
此方法返回一个字符数组。但为什么会这样呢?背后有什么具体的想法吗?
为什么它不返回字符串

嗯。关键是,字符串的生命周期有点特殊。
所有字符串都存储在字符串池中。当引用丢失时(取消引用),例如当您说
String=null时该字符串在内部字符串池中仍然处于活动状态(并且可以以某种我不知道的方式进行访问)。这就是为什么密码存储在char[]中的原因。因为这些对象是“普通的”。

“所有字符串都存储在字符串池中。”不,只有文本和字符串是显式调用的
intern()
方法<代码>新字符串(“hello”)
不在字符串池中,
“hello”
在字符串池中。为什么您要问问题并自己回答它??!嗯@这是一种分享java知识的方式。@sexyboy是一种分享知识的方式。但就像所有新问题一样,在你发布之前,你应该首先检查它是否是新的/原始的问题,并且还没有被问到和回答。