我想将String转换为char []以对其执行一些按位操作.
我的第一种方法是使用java标准函数:
String foo = "123456789"
char [] bar = foo.toCharArray();
System.out.println(bar.toString); //output: [C@4263e7f8
Run Code Online (Sandbox Code Playgroud)
因此,似乎使用此函数更改了数据.如果我全部手动完成:
String foo = "123456789"
char [] bar = new char[foo.length()];
for (int i=0; i< foo.length(); i++) {
bar[i]=foo.charAt(i);
}
StringBuilder sb = new StringBuilder();
for (int i=0; i< bar.length; i++) {
sb.append(bar[i]);
}
System.out.println(sb.toString); //output: 123456789
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我使用标准函数时,为什么会得到不同的数据.我期待在.toCharArray后跟.toString之后总是得到相同的数据.我不确定Java String是如何按位表示的.这可能是个原因吗?
在第一个代码段中,bar是一个array object.因此,当您尝试打印对象时,它会打印出来hashcode
如果使用相同的逻辑,即char在使用创建条形图后从数组中构建字符串,则toCharArray()可以看到相同的结果.