【问题标题】:What is the need of convert a String to charArray?将 String 转换为 charArray 需要什么?
【发布时间】:2021-05-15 01:31:55
【问题描述】:

我知道这是一个非常基本的问题。但我对此很困惑。正确地,我不明白为什么我们需要将字符串转换为 CharArray。我知道toCharArray() 方法的工作。只有我想要一些实时示例来说明为什么我们需要这种方法。 在我的问题中,我还想了解 charArray 与 hashcode 的关系。

我知道 charArray 表示:

char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };

示例

public class Test {

public static void main(String args[]){
    String a = "bharti";
    char[] charArray = a.toCharArray();
    System.out.println(charArray);

} 
}

输出:bharti

对我来说,在变量 'a' 中,no 输出和我的字符串 bharti 之间没有区别。

问题产生来源 :
实际上我想编写一个代码来生成一个哈希密码,所以我从谷歌那里读取了一些代码,其中主要使用了 toCharArray() 方法。所以我不明白我们为什么要使用它。

【问题讨论】:

  • System.out.println的角度来看没有明显的区别。但某些 API 可能需要数组而不是字符串。
  • 也许您想要 String 中的所有唯一字符,也许您想要反转它并遍历每个 char。总而言之,我并没有真正得到这个问题,因为有足够多的例子你需要它。
  • 这真的取决于你想要做什么。也许您想操作字符,删除一些,添加更多,流式传输它们,您可能需要一个字符数组确实有无限的理由。使用 System.out.println 时,您实际上只是在 char 数组上调用 toString。
  • 您是在寻找 chararray 的示例,就像您在 cmets if you add more example for another case 中所说的那样,还是您想了解 chararrayhashcode 的关系

标签: java


【解决方案1】:

如果您想对元素的顺序进行处理,例如 sort() 它们,则从 String 转换为 char[] 非常有用。

字符串是不可变的,不太适合操作。

例如:

    String original = "bharti";
    char[] chars = original.toCharArray();
    Arrays.sort(chars);
    String sorted = new String(chars);
    System.out.println(sorted);

哪个打印:

放弃


另外,一些方法/类明确要求char[]作为输入,例如PBEKeySpec

byte[] salt = new byte[16];
random.nextBytes(salt);
KeySpec spec = new PBEKeySpec("password".toCharArray(), salt, 65536, 128);
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
byte[] hash = f.generateSecret(spec).getEncoded(…

理由是您可以从内存中擦除 char[] 内容。在此处查看更多信息:https://stackoverflow.com/a/8881376/461499

【讨论】:

  • 感谢您的回复。现在我开始使用它了。你的回答很有帮助。如果您为另一个案例添加更多示例,将非常感谢。
  • Robau 我正在研究您给出的 PBEKeySpec 示例。谢谢你。这里只解释一下new byte[16]的作用??
  • 那是盐。阅读本文了解更多信息:stackoverflow.com/a/2969871/461499
【解决方案2】:

如果你想检查字符串中的每个字符,而不是整个字符串,这很有用,例如:

public boolean hasDigit (String input){
    for (char c: input.toCharArray()){
        if (Character.isDigit(c)){
            return true;
        }
    }
    return false;
}

此方法检查字符串中的一个字符是否为数字。

【讨论】:

  • 谢谢@richardK。这也是有帮助的答案。
【解决方案3】:

String 和 charArray 之间存在差异。两者中数据的存储方式相同,但这并不意味着两者相同。String 是不可变的,而 charArray 不是。String 是用 char 数组实现的,每次您尝试修改它,它会为您提供一个新的 String 对象。由于其不可变的属性,String 的行为为 Constant,而 Char Araay 则不是。

两者的使用取决于您的需要和要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 2014-04-28
    • 2012-11-23
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多