2

これは私を困惑させています。を取得してStringに変換していますChar arrayが、結果の文字は元の と同じではありませんString。何を与える?一度に1文字ずつ試してみました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()メソッドをオーバーライドしていないか、何か問題があります。

2 つのポインターが同じではないという事実は、2 つの文字列が等しくないという意味ではありません (比較する必要があり.equals(..)、異なる方法で比較する必要はありません)。

より正確には、pieceStates_.toString()印刷され[C@41693070た場合、toStringはオーバーライドされず、Java はそれを印刷する方法を知りません。同じことが他の変数にも当てはまります。次に、Java の配列型はデフォルトでは印刷可能ではありませんArrays.toString(..)。実際にその内容を確認するために使用する必要があります。

于 2012-07-21T14:38:42.650 に答える
2

使用する :

System.out.println("Char に変換 = " + String.valueOf(pieceStates_) );

String.valueOf(Character_Array)

上記のメソッドは、それを String オブジェクトに変換します。

于 2012-07-21T14:42:26.310 に答える