Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 문자열의 인턴십

<시간/>

문자열 인턴은 모든 고유 문자열 값의 단일 복사본이 저장되는 프로세스입니다. 또한 문자열도 변경할 수 없습니다. 이런 식으로 문자열은 동일한 데이터를 포함하고 동일한 메모리를 공유할 수 있습니다. 이렇게 하면 필요한 메모리가 크게 줄어듭니다.

'인턴' 함수가 호출될 때 -

  • 두 문자열 간의 동등성을 검사합니다. 문자열 개체가 SCP(문자열 상수 풀)에 있는지 여부입니다.

  • 사용 가능한 경우 풀에서 문자열을 가져와서 반환합니다. 그렇지 않으면 새 String 개체가 만들어지고 풀에 추가됩니다. 이 문자열 개체에 대한 참조도 반환됩니다.

  • 2개의 문자열 'a'와 'b'에 대해 a.intern() ==b.intern()은 true이고 a.equals(b)는 true를 반환합니다.

예를 들어 보겠습니다 -

public class Demo{
   public static void main(String[] args){
      String s1 = new String("Its");
      String s2 = s1.concat("sample");
      String s3 = s2.intern();
      System.out.println("Checking equality of object 2 and 3 :");
      System.out.println(s2 == s3);
      String s4 = "Its a sample";
      System.out.println("Checking equality of object 3 and 4 :");
      System.out.println(s3 == s4);
   }
}

출력

Checking equality of object 2 and 3 :
true
Checking equality of object 3 and 4 :
false

Demo라는 클래스에는 주요 기능이 포함되어 있습니다. 여기에 String 개체의 세 가지 인스턴스가 정의되어 있습니다. 여기서 두 번째 문자열은 첫 번째 문자열과 다른 값을 연결한 것입니다. 세 번째 문자열은 두 번째 문자열에서 'intern'에 대한 함수 호출입니다. 이 문자열은 '==' 연산자를 사용하여 비교되고 결과가 콘솔에 표시됩니다.