Java 中各种空(""、\u0000、null)的区别?
PHPz
PHPz 2017-04-18 10:51:28
0
2
937
String s1 = "";
String s2 = "\u0000";
String s3 = null;

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

PHPz
PHPz

学习是最好的投资!

모든 응답(2)
巴扎黑

클래스 바이트코드 관점에서 이해해보자
1.String s1 = "", 다음은 컴파일된 바이트코드인데, 이 경우에는 실제로 차이가 없음을 알 수 있다 s1="aaa" , 모두 push 상수 풀의 문자열을 스택 상단으로 가져와 지역 변수에 할당합니다.

으아아아

2. String s2=null의 경우 이때 상수 풀에는 문자열 상수가 생성되지 않고 null만 스택 맨 위로 푸시되어 변수에 할당됩니다.

으아아아

3. String s3 = "u0000"의 경우 NUL을 나타내는 문자열이 소위 제어 문자인 상수 풀에 생성됩니다.

으아아아
洪涛

테스트 환경: jdk-8.0-102

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿