Eclipseを使用してJavaで開発しているときに、ブレークポイントでString変数の値を表示したいと思います。
文字列変数はとして表示されます[47, 110, 109, 107, 111]
。これは、文字列が実際にはASCII文字の配列であるため意味があります。
ただし、文字列を調べるたびにASCII値から文字に変換する必要はありません。ASCII値の配列ではなく文字列をデバッガーに表示させるにはどうすればよいですか?
string
文字列オブジェクトの新しいインスタンスを作成して、正しいエンコーディングで配列をに変換してみてください。
String s = new String(bytes,"ASCII");
System.out.println(s);
これがデモンストレーションする短い例です:
String example = "This is an example";
byte[] bytes = example.getBytes();
System.out.println("Text : " + example);
System.out.println("Text [Byte Format] : " + bytes);
System.out.println("Text [Byte Format] : " + bytes.toString());
String s = null;
try {
s = new String(bytes, "ASCII");
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Text from bytes: " + s);
出力:
テキスト:これは例です
テキスト[バイト形式]:[B @ 187aeca
テキスト[バイト形式]:[B @ 187aeca
バイトからのテキスト:これは例です
参照:
変数が文字列であることが確実な場合:
デバッグビューは、それを文字列として自動的に表示する必要があります。
変数が実際に文字列であることを確認してください。
私は以前そのような状況にありました。デバッグ中にEclipseバージョンで問題が発生したと思います。古いバージョンの日食またはIntelliJ(2018)およびjdk 8に変更した後、=>問題は解決しました。