java字符串到char数组和反向导致错误的结果

phi*_*hil 1 java string char

我想将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是如何按位表示的.这可能是个原因吗?

HJK*_*HJK 7

在第一个代码段中,bar是一个array object.因此,当您尝试打印对象时,它会打印出来hashcode

如果使用相同的逻辑,即char在使用创建条形图后从数组中构建字符串,则toCharArray()可以看到相同的结果.