ホームページ  >  に質問  >  本文

Java 中各种空(""、\u0000、null)的区别?

String s1 = "";
String s2 = "\u0000";
String s3 = null;

s1、s2、s3 的区别,分别在字符串常量池和栈中的储存情况?

PHPzPHPz2743日前889

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-04-18 10:53:28

    クラスバイトコードの観点から理解しましょう
    1.String s1 = ""、以下はコンパイルされたバイトコードです。この場合、実際には違いがないことがわかります s1="aaa"、これらはすべて文字列をプッシュします定数プールからスタックの先頭に移動し、それをローカル変数に代入します。

    リーリー

    2. String s2=null の場合、この時点では定数プールに文字列定数は生成されず、null のみがスタックの先頭にプッシュされて変数に代入されます。

    リーリー

    3. String s3 = "u0000" の場合、NUL を表す文字列、いわゆる制御文字が定数プールに生成されます。

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:53:28

    テスト環境: jdk-8.0-102

    返事
    0
  • キャンセル返事