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