【问题标题】:Java Converting: char[] array --> StringJava 转换:char[] 数组 --> 字符串
【发布时间】:2012-07-25 14:23:01
【问题描述】:

如何将字符数组转换为字符串?
我有这个代码

Console c = System.console();
if (c == null) {
    System.err.println("No console.");
    System.exit(1);
}
char [] password = c.readPassword("Enter your password: ");

我需要将其转换为字符串,以便验证

if(stringPassword == "Password"){
    System.out.println("Valid");
}

谁能帮我解决这个问题?

【问题讨论】:

  • 有一个reason char[] 用于Strings 以​​上的密码。

标签: java string char


【解决方案1】:

使用String(char[]) 构造函数。

char [] password = c.readPassword("Enter your password: ");
String stringPassword = new String(password);

当你比较时,不要使用==,使用`.equals():

if(stringPassword.equals("Password")){

【讨论】:

  • 您还应该添加一点关于不使用== 来比较字符串的相等性。
  • 谢谢,您发表评论时正在编辑。
  • 作为最佳实践,如果您将变量与字符串文字或常量进行比较,请始终从字符串文字或常量调用 .equals 方法以避免可能的空指针异常,即“密码".equals(stringPassword)
  • 谢谢大家。 :) 如果允许,我会在 8 分钟内接受你的回答:D
【解决方案2】:

您需要从char[] 中创建一个new String。然后你需要使用.equals() 方法来比较它们,而不是==

所以不是

if(stringPassword == "Password"){

你得到

if("password".equals(new String(stringPassword))) {

【讨论】:

    【解决方案3】:

    虽然效率不高,但您始终可以使用 for 循环:

    char [] password = c.readPassword("Enter your password: ");
    String str = "";
    
    for(i = 0; i < password.length(); i++){
        str += password[i];
    }
    

    这是一种非常简单的方法,不需要事先了解标准库中的函数/类!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2013-04-25
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多