Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java字符串到字符数组和反转导致错误结果_Java_String_Char - Fatal编程技术网

java字符串到字符数组和反转导致错误结果

java字符串到字符数组和反转导致错误结果,java,string,char,Java,String,Char,我想将字符串转换为char[],以便对其执行一些位操作 我的第一种方法是使用java标准函数: String foo = "123456789" char [] bar = foo.toCharArray(); System.out.println(bar.toString); //output: [C@4263e7f8 因此,似乎使用此函数可以更改数据。 如果我全部手动操作: String foo = "123456789" char [] bar = new char[foo.le

我想将字符串转换为char[],以便对其执行一些位操作

我的第一种方法是使用java标准函数:

String foo = "123456789"
char [] bar = foo.toCharArray();
System.out.println(bar.toString); //output: [C@4263e7f8
因此,似乎使用此函数可以更改数据。 如果我全部手动操作:

  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
String foo=“123456789”
char[]bar=新字符[foo.length()];
对于(int i=0;i
我的问题是为什么在使用标准函数时会得到不同的数据。我希望我总是在.tocharray后面跟.toString之后得到相同的数据。我不确定Java字符串是如何按位表示的。这可能是一个原因吗?

foo.tocharray()
不会更改数据。如果要恢复原始字符串,应调用
newstring(bar)

对数组调用
toString()
将执行
Object
类中
toString
方法的默认实现,该方法显示实例的类名(对于
char
数组,它显示
[C
)和
hashCode

如果要显示该数组的字符,请使用
Arrays.toString(bar)
foo.tocharray()
不会更改数据。如果要恢复原始字符串,应调用
new String(bar)

对数组调用
toString()
将执行
Object
类中
toString
方法的默认实现,该方法显示实例的类名(对于
char
数组,它显示
[C
)和
hashCode


如果要显示该数组的字符,请使用
Arrays.toString(bar)

在第一个代码段中,bar是一个
数组对象
。因此,当您试图打印该对象时,它会打印它
hashcode


如果使用与使用
toCharArray()
创建bar后从
char
数组生成字符串相同的逻辑,则可以看到相同的结果。

在第一个代码段中,bar是一个
数组对象
。因此,当您尝试打印该对象时,它会打印它
hashcode

如果使用与使用
toCharArray()
创建条后从
char
数组构建字符串相同的逻辑,则可以看到相同的结果。

使用

System.out.println(Arrays.toString(bar)); //to print the result in list form
System.out.println(new String(bar)); //to print the result as a string
JAVA
中,
数组
是动态创建的
对象
,可以分配给
对象
类型的变量。类
对象
的所有方法都可以在数组上调用

在对象上调用
toString()
时,它会返回一个“文本表示”对象的字符串。因为数组是对象的实例,所以只能得到类的名称、@和十六进制值。

使用

System.out.println(Arrays.toString(bar)); //to print the result in list form
System.out.println(new String(bar)); //to print the result as a string
JAVA
中,
数组
是动态创建的
对象
,可以分配给
对象
类型的变量。类
对象
的所有方法都可以在数组上调用


在对象上调用
toString()
时,它会返回一个“文本表示”该对象的字符串。因为数组是对象的实例,所以只能得到类的名称、@和十六进制值。

每当尝试使用
toString()打印数组时
,它将打印
hashcode
,而不是打印内容。因为:

Java数组是对象,数组类型的直接超类是 反对

因此,当您尝试调用
toString
方法时,它将直接调用对象的toString方法,即:

getClass().getName() + '@' + Integer.toHexString(hashCode())
但是当您使用
StringBuilder
class
toString()
时,它将返回一个
String
对象:

return new String(value, 0, count);

每当您尝试使用
toString()
打印数组时,它将打印
hashcode
,而不是打印内容。因为:

Java数组是对象,数组类型的直接超类是 反对

因此,当您尝试调用
toString
方法时,它将直接调用对象的toString方法,即:

getClass().getName() + '@' + Integer.toHexString(hashCode())
但是当您使用
StringBuilder
class
toString()
时,它将返回一个
String
对象:

return new String(value, 0, count);

您正在调用char数组类型的toString方法。该方法使用默认实现。结果是正确的,但不要只使用sop(myArray);这将获得您不想要/预期的结果。另一方面,StringBuilder有一个toString的实现,它可以获得您想要的结果。谢谢您的所有答案-我不能投票选择“答案”然而,我并不期望同一个函数有不同的实现。每个类都有自己的toString实现。它不是在类本身中实现的,而是从它的超类中获取实现。您正在调用char数组类型的toString方法。这使用默认实现。结果是正确的,但不正确ust go sop(myArray);这将获得您不想要/预期的结果。另一方面,StringBuilder有一个toString的实现,它可以获得您想要的结果。谢谢您的所有答案-我不能投票选择“答案”然而,我并不期望同一个函数有不同的实现。每个类都有自己的toString实现。如果它不是在类本身中实现的,它会从它的超类中获取实现。