13

私のタイトルが示すように、これは理論的な質問です。Javaが文字列をnull終端として定義しているかどうかを知りたいです。

4

3 に答える 3

8

Java 文字列は、C または C++ のようにヌル文字で終了しません。Java 文字列は内部的に char 配列を使用しますが、その中に終端の null はありません。String クラスには、文字列の文字数を知るために length というメソッドが用意されています。

簡単なコードとそのデバッガーの内容は次のとおりです。

public static void main(String[] args) {
    String s = "Juned";
    System.out.println(s);
}

デバッガーのスクリーンショット:

ここに画像の説明を入力

于 2013-08-24T04:19:23.980 に答える
0

それは問題ですか?

Java 文字列をある種のシリアル化された形式 (ディスク、ネットワークなど) に変換する場合、重要なのはシリアル化形式であり、JVM の内部形式ではありません。

JNI を介して C コードで文字列のデータを読み取る場合、データを直接読み取ることはなく、常にGetStringChars()や などの JNI 関数を使用しますGetStringUTFChars()GetStringChars()は null で終わるデータを返すとは文書化されていないため、null で終わると想定しないでくださいGetStringLength()。長さを決定するには、 を使用する必要があります。同様にGetStringUTFChars()、 を使用して、変更された UTF-8 形式GetStringUTF8Length()での長さを決定する必要があります。

于 2013-08-24T04:24:41.827 に答える