String s1 = "";
String s2 = "\u0000";
String s3 = null;
s1、s2、s3 的区别,分别在字符串常量池和栈中的储存情况?
巴扎黑2017-04-18 10:53:28
クラスバイトコードの観点から理解しましょう
1.String s1 = ""、以下はコンパイルされたバイトコードです。この場合、実際には違いがないことがわかります s1="aaa"、これらはすべて文字列をプッシュします定数プールからスタックの先頭に移動し、それをローカル変数に代入します。
2. String s2=null の場合、この時点では定数プールに文字列定数は生成されず、null のみがスタックの先頭にプッシュされて変数に代入されます。
リーリー3. String s3 = "u0000" の場合、NUL を表す文字列、いわゆる制御文字が定数プールに生成されます。
リーリー