Java:控制台类
可能重复:
为什么char []优先于字符串的密码?
阅读java文档,我发现了关于Console类的这个声明
首先,它抑制回声,所以密码在用户的屏幕上不可见。 其次,readPassword返回一个字符数组,而不是一个String,所以密码可以被覆盖,一旦不再需要它就从内存中移除。
为什么一个字符数组可以被覆盖并且一个String不是? 或者,也许可以更简单的方式覆盖角色数组?
JVM可以将String
保存在一个名为String pool
的地方,以更有效地管理String
的内存使用情况。 但是,这样做的一个副作用是,即使在用新String
覆盖引用之后,它仍可能保留在内存中。
字符数组可以直接覆盖,因此在这方面更安全。
来自Sun认证的Java编程器Java 6学习指南:
readPassword方法不返回一个字符串:它返回一个字符数组。 原因如下:一旦你获得了密码,你可以验证它,然后绝对从内存中删除它。 如果返回一个字符串,它可能存在于内存中的某个池中,也许某些恶毒的黑客可能找到它。
链接地址: http://www.djcxy.com/p/17889.html上一篇: Java: Console class