String 클래스의 API 메서드
- 메서드 요약
char | charAt(int intdex)
→ 지정된 인덱스에 있는 문자를 반환한다. |
int | compareTo(String anotherString)
→ 사전적 순서로 문자열을 비교한다.
(앞에 있으면 -1, 같으면 0, 뒤에 있으면 1이 반환) |
String | concat(String str)
→ 주어진 문자열을 현재의 문자열 뒤에 붙인다. |
boolean | equals(Object anObject)
→ 주어진 객체와 현재의 문자열을 비교한다. |
boolean | isEmpty()
→ length()가 0이면 true를 반환한다. |
int | length()
→ 현재 문자열의 길이를 반환한다. |
String | toLowerCase()
→ 문자열의 문자들을 모두 소문자로 변경한다. |
String | toUpperCase()
→ 문자열의 문자들을 모두 대문자로 변경한다. |
String의 메서드 실사용
- 객체 생성 → 객체를 생성하기 위해서는 new를 사용해야 하지만 문자열은 2가지 방법이 있다.
String s1 = "Java"; // 많이 사용하는 방식 String s2 = new String("Java"); // 원칙
- 문자열의 기초 연산들
- 길이 반환 → 문자열 길이 반환 [ length() ]
String s = "Hello World!"; // 객체 생성 int size = s.length(); // 12가 반환
String s = "Hello World!"; // 객체 생성 char c = s.charAt(0); // 'H'가 반환된다.
String result = "A chain" + "is only as strong" + "as its weakest link";
- 문자열 비교하기 → 2개의 문자열이 동일한지 검사 [ equals() ]
String s1 = "Java"; // 많이 사용하는 방식 String s2 = "Java"; String s3 = new String("Java"); // 원칙 String s4 = new String("Java"); System.out.println(s1.equals(s2)); // true, 올바른 방법 System.out.println(s1.equals(s3)); // true, 올바른 방법 System.out.println(s1==s2); // true 이지만 올바르지 않은 방법 System.out.println(s1==s3); // false, 올바르지 않은 방법
자바에서 == 연산자로는 문자열 객체를 비교 할 수 없다.
따라서 == 연산자를 사용 시 문자열 객체의 주소만 비교한다.
- 문자열 안에서 단어 찾기 → 단어의 시작 위치 반환 [ indexOf() ]
String s = "The cat is on the table"; int index = s.indexOf("table"); if(index == -1) System.out.println("table은 없습니다. "); else System.out.println("table의 위치: " + index); // 18이 출력된다
- 문자열을 단어로 분리할 때 → 문자열을 배열로 분리 [ split() ]
String[] tokens1 = "I am a boy.".split(" "); for (String token : tokens1) System.out.println(token); // I, am, a, boy. 로 분리되어 출력 String[] tokens2 = "100,200,300".split(","); for (String token : tokens2) System.out.println(token); // 100, 200, 300 으로 분리되어 출력
StringBuffer 클래스
- 불변성을 가진 String 클래스를 대안으로 만들어진 클래스이다.
- 추가, 수정, 삭제에 String보다 좋다. → heap 메모리에 저장되어 이런 장점을 가진다.
- append()와 insert()를 제공받고 있다. (append() → 문자열의 끝에 여러 종류의 데이터를 추가하는 메서드, insert() → 문자열의 특정 위치에 여러 종류의 데이터를 문자열로 바꾸어 삽입하는 메서드)
- 기본적인 문법으로 사용한 모습
StringBuffer s = new StringBuffer("Happiness depends upon ourselves");
append()와 insert() 실사용
StringBuffer sb = new StringBuffer("10+20="); sb.append(10+20); sb.insert(0, "수식 "); // sb= "수식 10+20=30"
String 상수풀이란?
상수이기 때문에 같은 모습이 없다. 그래서 같은 값을 가질 때는 같은 주소 값으 가진다.
→ 이로인해 그냥 비교하면 주소 값으로 비교하는데 equals()를 쓰면 값으로 비교 하기 때문에 많이 쓴다.
Share article