由于在Java中不可变,如果您将密码存储为纯文本,则在垃圾收集器清除它之前,它将在内存中可用,并且由于使用了String are :在用于可重用的字符串池中,很有可能将它长时间保存在内存中,这将对安全构成威胁2)Java本身推荐使用getPassword()方法(),即返回更高级的char[]的getPassword()方法,并以明文的形式返回密码,说明安全原因。3)对于字符串,在日志文件或控制台中打印纯文本总是有风险的,但是如果使用更高级的数组,则不会打印数组的内容,而是打印其内存位置。虽然不是真正的原因但还是有意义的。