Avatar ·

为什么在Java中存储密码时char[]比String更可取?

大家好!我是一名Java新手开发者,正在编写一个小型用户认证应用程序。在处理密码时遇到了安全问题。 通常我使用String从控制台或JPasswordField字段读取密码。例如: ```java Console console = System.console(); String password = new String(console.readPassword("请输入密码:")); ``` 但最近在一个论坛上看到,使用String存储密码是不好的实践,应该使用char[]。老实说,我不太理解区别。毕竟String只是一组字符,就像char数组一样。为什么说char[]更安全呢? 我知道String是不可变的,但这有什么问题吗?使用完密码后,我可以将变量赋值为null,垃圾收集器迟早会从内存中删除该字符串。 有人能通俗地解释一下其中的陷阱吗?以及如何在Java中正确处理密码?我将非常感激!