intern () 방법

2124 단어 학습 노트
intern () 방법 은 문자열 대상 의 규범화 표현 형식 을 되 돌려 줍 니 다.
이것 은 다음 과 같은 규칙 을 따 릅 니 다. 임의의 두 문자열 s 와 t 에 대해 s. equals (t) 가 true 일 때 만 s. intern () = t. intern () 이 true 입 니 다.
구체 적 으로 소 개 를 하지 않 고 인용 을 보십시오.http://www.runoob.com/java/java-string-intern.html
재 미 있 는 것 한 토막 주세요.
//1:
        String s1 = new StringBuilder("go").append("od").toString(); 
        System.out.println(s1.intern() == s1); 
//2:
        String s0 = "good";
        String s2 = new StringBuilder("go").append("od").toString(); 
        System.out.println(s2.intern() == s2); 
//3:
        String s3 = new StringBuilder("ja").append("va").toString(); 
        System.out.println(s3.intern() == s3);

 
결과 1: true;  결과 2: false;  결과 3: false;
 
이 걸 처음 본 동료 가 그 렇 죠? 순간 세 글자 'WTF' 를 봤 어 요. 코드 가 똑 같 아 요. 값 만 다 르 죠?
결과 1: s1. intern () 에서 'good' 이 상수 탱크 에 존재 하지 않 는 것 을 발견 하면 s1 을 가리킨다.이 때 끝 에 'good' 이 상수 탱크 에서 만 들 면 s1 을 직접 가리 키 는 것 을 설명 합 니 다.
결과 2: s0 은 상수 탱크 에 'good' 을 만 들 었 기 때문에 s2. intern () 은 s0 을 직접 가리 키 고 쌓 인 s2 와 s0 은 자연 false 를 비교 합 니 다.
결과 3: 결과 1 로 보이 지만 사실은 결과 2 입 니 다. 일부 키 워드 는 JDK 에서 상수 탱크 에 만 들 어 졌 기 때 문 입 니 다.
 
주: 프로그램 이 시 작 될 때 이미 많이 불 러 왔 습 니 다 class. 이 안에 도 문자 상수 의 생 성 이 있 습 니 다. 단지 당신 이 만 든 것 이 아 닙 니 다. 당신 은 모 를 뿐 입 니 다.
 
     실례 화 된 String 대상 에서 intern () 방법 을 호출 한 후, 가상 기 회 는 String 버퍼 에서 이 Stirng 대상 이 봉 인 된 문자열 의 내용 과 같은 값 의 String 대상 을 찾 은 다음, 인용 할당 값 을 원래 의 String 대상 을 인용 한 String 형식 변 량 에 줍 니 다.String 버퍼 에 이 String 대상 이 봉 인 된 문자열 의 내용 과 같은 값 의 String 대상 이 존재 하지 않 는 다 면 가상 기 회 는 이 를 위해 새로운 String 대상 을 만 들 고 이 를 인용 하여 원래 의 String 대상 을 인용 하 는 String 형식 변 수 를 할당 합 니 다.
 
new 로 만 든 문자열 대상 은 문자열 풀 에 들 어가 지 않 습 니 다.
문자열 을 추가 할 때 정적 문자열 의 결 과 는 문자열 풀 에 추 가 됩 니 다. 변 수 를 포함 하면 문자열 풀 에 들 어가 지 않 습 니 다.
intern () 은 두 가지 역할 을 합 니 다. 첫 번 째 는 문자열 의 글자 수 를 상수 탱크 에 넣 는 것 입 니 다. 두 번 째 는 이 상수 의 인용 을 되 돌려 주 는 것 입 니 다.
 
이해 할 수 없다 면 박문 을 추천 합 니 다.https://blog.csdn.net/SEU_Calvin/article/details/52291082  갑자기 밝 아 지게 해 줄 게.

좋은 웹페이지 즐겨찾기