찾다

 >  Q&A  >  본문

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

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

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

PHPzPHPz2803일 전933

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

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

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

    으아아아

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

    으아아아

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

    으아아아

    회신하다
    0
  • PHP中文网

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

    테스트 환경: jdk-8.0-102

    회신하다
    0
  • 취소회신하다