2

这让我很困惑。我正在抓取 aString并将其转换为 aChar array但生成的字符与原始字符不同String。是什么赋予了?我一次尝试过一个角色,也尝试过toCharArray()。结果相同。

输出:

07-21 09:58:27.700: V/meh(22907): Loaded String = [C@42126d88

07-21 09:58:27.700: V/meh(22907): Convert to Char = [C@41693070

String temp = prefManager_.getString("PrevGameState", "");
Log.v("meh", "Loaded String = " + temp);

pieceStates_ = temp.toCharArray();
Log.v("meh", "Convert to Char = " + pieceStates_.toString());
4

2 回答 2

4

它输出的值确实不是字符串,而是内存中的指针。可能您没有覆盖该toString()方法或有问题。

两个指针不相同的事实并不意味着两个字符串不相等(应该比较.equals(..)而不是以任何不同的方式)。

更准确地说,如果pieceStates_.toString()打印[C@41693070,则toString不会被覆盖,Java 不知道如何打印它。同样的事情适用于其他变量。那么Java中的数组类型默认是不可打印的,你应该使用Arrays.toString(..)它来实际查看它的内容。

于 2012-07-21T14:38:42.650 回答
2

采用 :

System.out.println("转换为字符 = " + String.valueOf(pieceStates_) );

String.valueOf(Character_Array)

上面的方法将其转换回 String 对象。

于 2012-07-21T14:42:26.310 回答