-
CHAPTER 9. (2) ★ String클래스란? (★★★ String 클래스 생성자, 메서드 포함)java/ㄴ CHAPTER 9. java.lang 패키지와 유용한 클래스 2020. 4. 23. 12:16
★
String클래스
- 문자열을 위한 클래스
- 문자열을 저장, 이를 다루는 메서드 제공
- 불변객체
=> 한번 생성한 문자열은 읽기만 가능 (변경 불가)
ㄴ 바뀌던데? : 바뀌는 게 아니라 새로운 문자열이 담긴 인스턴스가 생성됬던 것
ㄴ 덧셈 연산자로 인한 연산 시마다 새로운 문자열을 가진 인스턴스가 생성됨 (메모리 공간 낭비) => 가능한 자제
ㄴ 만약 문자열 간 결합, 추출 등이 필요한 작업이라면 String 클래스 말고 StringBuffer 클래스 사용 추천
문자열 작성 시 방법
- 문자열 리터럴 지정
ㄴ 이미 존재하는 경우 재사용
- String 클래스 생성자 사용
ㄴ new 연산자에 의해 메모리 할당, 항상 새로운 인스턴스 생성
★ 두 문자열 비교?
equals 사용 시 내용을 비교하기 때문에 true 지만,
등가비교 연산자 == 사용시 String 인스턴스의 주소를 비교하기 때문에 결과가 다름 (false)
빈 문자열
- 길이가 0인 문자열
ex.
char c = ' '; // 가능, 기본값 \u0000보다는 ' ' 로 사용 권장, ''는 오류
String str = ""; // 가능, 기본값 null 보다는 ""로 사용 권장
★★★
String 클래스 생성자, 메서드
★
int compareTo(String str)
- 문자열(str)과 사전 순서로 비교. 같으면 0 , 이전이면 음수, 이후면 양수 반환
ex.
int i1 = "aaa".compareTo("aaa"); // i = 0
int i2 = "aaa".compareTo("bbb"); // i = -1
int i3 = "bbb".compareTo("aaa"); // i = 1
boolean contains(CharSequence s)
- 지정된 문자열이 포함되었는지 검사
ex.
String s = "abcdfg"
boolean bl = s.contains("bc");
// b = true
boolean endsWith(String suffix)
- 지정된 문자열(suffix)로 끝나는지 검사
ex.
String file = "Hello.txt";
boolean b = file.endsWith("txt");
// b = true
boolean equals(Object obj)
- 매개변수로 받은 문자열(obj)가 String인스턴스 문자열 비교 , 다르면 false 반환
ex.
String s = "Hello";
boolean b1 = s.equals("Hello"); // b1 = true
boolean b2 = s.equals("hello"); // b2 = false
boolean equalsIgnoreCase(String str)
- 문자열과 String인스턴스 문자열을 대소문자 구분없이 비교
ex.
String s = "Hello";
boolean b1 = s.equalsIgnoreCase("HELLO"); // b1 = true
boolean b2 = s.equalsIgnoreCase("hello"); // b2 = true
★
int indexOf(int ch)
- 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려줌, 못 찾으면 -1 반환
ex.
String s = "Hello";
int idx1 = s.indexOf('o'); // idx1 = 4
int idx2 = s.indexOf('k'); // idx2 = -1
int indexOf(int ch, int pos)
- 주어진 문자(ch)가 문자열에 존재하는지 지정된 위치(pos)부터 확인하여 위치(index)를 알려줌. 못 찾으면 -1 반환
ex.
String s = "Hello";
int idx1 = s.indexOf('e'. 0); // idx1 = 1
int idx2 = s.indexOf('e'. 2); // idx2 = -1
int indexOf(String str)
- 주어진 문자열이 존재하는지 확인하여 그 위치(index)를 알려줌. 없으면 -1 반환
ex.
String str = "ABCDEFG";
ind idx = str.indexOf("CD");
// idx = 2
int lastIndexOf(int ch)
- 지정된 문자 or 문자 코드를 문자열의 오른쪽 끝부터 찾아서 위치 알려줌. 못 찾으면 -1 반환
ex.
String str = "java.lang.Object";
int idx1 = str.lastIndexOf('.'); // idx1 = 9
int idx2 = str.IndexOf('.'); // idx2 = 4
// ??? 먼저 문자열 길이 확인하고 그 다음부터 세는건가?
int lastIndexOf(String str)
- 지정딘 문자열을 인스턴스 문자열 끝부터 찾아서 위치 알려줌. 못 찾으면 -1 반환
ex.
String str = "java.lang.Object";
int idx1 = str.lastIndexOf("java"); // idx1 = 10
int idx2 = str.indexOf("java"); // idx2 = 0
// ??? 이건 뭐지
int length()
- 문자열의 길이 알려줌
ex.
String str = "Hello";
int length = str.length();
// length = 5
String replace(char old, char nw)
- 문자열 중의 문자(old)를 새로운 문자(nw)로 바꾼 문자열 반환
ex.
String str = "Hello";
String s1 = str.replace('H', 'C');
// s1 = "Cello"
★
String replace(CharSequence old, CharSequence nw)
- 문자열 중의 문자열(old)을 새로운 문자열(cw)로 모두 바꾼 문자열을 반환
ex.
String str = "Hellollo";
String s1 = str.replace("ll", "LL");
// s1 = "HeLLoLLo"
String replaceAll(String regex, String replacement)
- 문자열 중에서 지정된 문자열(regex)과 일치 하는 것을 새로운 문자열(replacement)로 모두 변경
ex.
String str = "AABBAABB";
String r = str.replaceAll("BB", "bb");
// r = "AAbbAAbb"
boolean isEmpty()
- 문자열 길이가 0이면 true 반환
String[] split(String regex)
- 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환
ex.
String animals = "dog,cat,bear";
String[] arr = animals.split(",");
// arr[0] = dog;
// arr[1] = cat;
// arr[2] = bear;
★
String[] split(String regex, int limit)
- 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환, 단 문자열 전체를 지정된 수(limit)로 자름
ex.
String animals = "dog,cat,bear";
String[] arr = animals.split("," , 2);
// arr[0] = "dog"
// arr[1] = "cat, bear"
boolean startWith(String prefix)
- 주어진 문자열(prefix)로 시작하는지 검사
ex.
String s = "java.lang.Object";
boolean b = s.startWith("java"); // b = true
boolean b2 = s.startWith("lang"); // b2 = false
* 주어진 문자열(endsWith)로 끝나는지 검사 도 있음
★
String substring(int begin)
String substring(int begin, int end)
- 주어진 시작위치(begin)부터 끝 위치(eng) 범위에 포함된 문자열을 얻음
이때, 시작위치의 문자는 범위에 포함되지만 끝 위치 문자는 포함되지 않음 ex.
String s = "java.lang.Object";
String c = s.substring(10); // Object
String p = s.substring(5, 9); // lang
String toLowerCase()
- String 인스턴스에 저장되어있는 모든 문자열을 소문자로 변환하여 반환
ex.
String s = "Hello";
String s1 = s.toLowerCase();
// s1 = "hello"
String trim()
- 문자열의 왼쪽 끝과 오른쪽 끝에 있는 공백을 없앤 결과 반환
(문자열 중간에 있는 공백은 제거되지 않음)
ex.
String s = " Hello World ";
String s1 = s.trim();
// s1 = "Hello World"
★
String valueOf(int i)
- 지정된 값을 문자열로 변환하여 반환
ex.
String i = String.indexOf(100);
// i = "100"
or
int i = 100;
String str = String.valueOf(i);
// i = "100"
join()
- JDK 1.8부터 추가됨
- 여러 문자열 사이에 구분자를 넣어서 결합
- 구분자로 문자열을 자르는 split()의 반대 작업
ex.
String str = "dog,cat,bear";
String[] arr = str.split(",");
String result = String.join("-", arr);
System.out.println(result)
// result = "dog-cat-bear"문자열과 기본형 간의 변환
valueOf()
ex.
int i = 100;
String str = String.valueOf(i);
parseInt()
int i = Integer.parseInt("100");
int i = Integer.valueOf("100");
- 원래는 parseInt()를 썼는데 메서드 이름 통일시하기 위해 valueOf() 가 나중에 추가됨
= 두 메서드는 반환 타입만 다르지 같은 메서드'java > ㄴ CHAPTER 9. java.lang 패키지와 유용한 클래스' 카테고리의 다른 글
CHAPTER 9. (5) ★ 래퍼Wrapper 클래스란? (★ Number 클래스, 문자열 숫자로 변환, 오토박싱 언박싱 포함) (0) 2020.04.23 CHAPTER 9. (4) ★ Math 클래스란? (★ Math 클래스 메서드 포함) (0) 2020.04.23 CHAPTER 9. (3) ★ StringBuffer 클래스란? (★ StringBuffer 메서드 포함) (0) 2020.04.23 CHAPTER 9. (1) java.lang 패키지란? (★ Object 클래스 주요 메서드 포함) (0) 2020.04.23