您的位置:首頁技術文章
文章詳情頁

Java 中各種空(""、u0000、null)的區別?

瀏覽:109日期:2024-01-19 13:53:23

問題描述

String s1 = '';String s2 = 'u0000';String s3 = null;

s1、s2、s3 的區別,分別在字符串常量池和棧中的儲存情況?

問題解答

回答1:

從class字節碼的角度來理解吧1.String s1 = ''的情況,下面是編譯后的字節碼,可以看到,這種情況s1='aaa'其實沒什么區別的,都是從常量池推一個字符串到棧頂,并賦給本地變量。

0: ldc #16 // String2: astore_13: return

2.String s2=null的情況,這個時候,并沒有在常量池中生成任何的字符串常量,僅僅是將null推送到棧頂賦值給變量。

0: aconst_null1: astore_12: return

3.String s3 = 'u0000'的情況,會在常量池生成一個表示NUL的一個字符串,也就是所謂的Control Character。

0: ldc #16 // String NUL2: astore_13: return回答2:

Java 中各種空(""、u0000、null)的區別?

Java 中各種空(""、u0000、null)的區別?

測試環境:jdk-8.0-102

標簽: java
相關文章:
国产综合久久一区二区三区