Java/Java 기초

Java28 String. intern, length, charAt, indexOf

Codezoy 2020. 6. 8. 20:27

String.intern()


  • String 참조형 변수가 동일한 문자열 리터럴을 참조하면, 동일한 인스턴스를 참조하게 된다.
  • 하지만 변수가 문자열 리터럴의 연산으로 초기화 되면, 컴파일시 계산되므로 개별적인 리터럴로 처리된다.
  • String.intern(); 메서드를 사용하면 동일한 값을 참조하는 문자열 객체를 동일한 인스턴스를 참조하도록 변수값을 수정한다.
String s1 = "DEF";
String s2 = "ABC" + s1;
String s3 = "ABC" + s1;

System.out.println("1. s2과 s3는 같은 문자열 리터럴을 참조"+
        ((s2==s3)?"하고 있다.":"하지 않고 있다."));

s2 = s2.intern();
s3 = s3.intern();
System.out.println("2. s2과 s3는 같은 문자열 리터럴을 참조"+
        ((s2==s3)?"하고 있다.":"하지 않고 있다."));

결과

1. s2과 s3는 같은 문자열 리터럴을 참조하지 않고 있다.
2. s2과 s3는 같은 문자열 리터럴을 참조하고 있다.

String.length, String.charAt


  • length : 문자 수를 확인한다.
  • charAt(i) : 문자열 안의 임의의 위치의 문자를 확인한다.
Scanner stdIn = new Scanner(System.in);

System.out.print("문자열: ");
String s = stdIn.next();

System.out.print("반대로 읽으면 ");
for(int i = s.length()-1; i>0; i--)
    System.out.print(s.charAt(i));
System.out.print("입니다.");

결과

문자열: MORNING
반대로 읽으면 GNINRO입니다.

String.indexOf(s)


  • 문자열 안에서 문자열s를 검색한다. 포함되어 있지 않으면 -1 , 포함되어 있으면 0, 1, .. 그 위치 인덱스를 반환한다.
String a = "ABCDE";
String b = "CD";
System.out.println(a.indexOf(b));

결과

2