我知道这是一个非常基本的问题。但我很困惑。正确地说,我没有得到为什么我们需要将String转换为CharArray 。我知道toCharArray()
方法的工作。只有我想要一些实时的例子,说明为什么我们需要这种方法。
在我的问题中,我也想了解charArray与哈希码的关系。
我知道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
对我来说,变量&#39; a&#39; < 输出与我的字符串bharti 之间存在没有 差异/强>
问题创建源:
实际上我想编写一个代码来生成一个哈希密码所以我正在从谷歌那里读取一些代码,其中大部分使用了toCharArray()方法。所以我没有得到我们为什么要使用它。
答案 0 :(得分:4)
如果您想对元素的顺序执行某些操作,则从String
转换为char[]
非常有用,例如sort()
。
字符串是不可变的,不太适合操作。
例如:
String original = "bharti";
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
System.out.println(sorted);
打印:
abhirt
此外,某些方法/类明确要求 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
答案 1 :(得分:0)
如果要检查String中的每个字符,而不是整个字符串,这很有用,例如:
public boolean hasDigit (String input){
for (char c: input.toCharArray()){
if (Character.isDigit(c)){
return true;
}
}
return false;
}
此方法检查String中的一个字符是否为数字。
答案 2 :(得分:0)
String和charArray之间存在差异。在这两种数据中,数据以相同的方式存储,并不意味着两者都是相同的.String是不可变的,而charArray不是.String是使用char数组实现的,每次尝试时修改它它会给你一个新的String对象。由于其不可变的属性,而Char Araay没有,它会表现为常量。
两者的使用取决于您的需要和要求。