Ori*_*n31 2 java string jpasswordfield
我知道人们以前曾问过这个问题,但是他们没有使用.equals()。所以我要再问一遍,为什么我有两个字符串,但是当我将它们与之比较时,.equals()我得到了错误。这两个字符串是1234(passwordField2.getPassword()和String s = bufferedreader.readLine()。),我已经使用s.toCharArray对其进行了比较,这是相同的。我尝试将它们都打印出来
1234
1234
有人知道为什么会这样吗?谢谢!
查看JavaDocs,passwordField2.getPassword()返回一个char[]。
以下代码将为您工作:
boolean passwordsMatch = bufferedreader.readLine().equals(
new String(passwordField2.getPassword())
);
Run Code Online (Sandbox Code Playgroud)
该代码在将转换为char[]可以与原始String值进行比较的字符串时起作用。
编辑:如Alex L.在其回答中所述,JPasswordField出于安全目的将密码存储为字符数组。
因此,编写此代码的更好方法可能是:
boolean passwordsMatch = Arrays.equals(
passwordField2.getPassword(),
bufferedreader.readLine().toCharArray()
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |