남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
String 클래스
(문자열을 다루기 위한 클래스)
- String 클래스 = 데이터 char[] + 메서드 (문자열 관련)
- 내용을 변경할 수 없는 불변(immutable)클래스
- 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐, 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용
문자열의 비교
String str = "abc"와 String str = new String("abc"); 의 비교
String String str1 = "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장
String str2 = "abc"; // 문자열 리터럴 "abc"의 주소가 str2에 저장
String str3 = new String("abc"); // 새로운 String인스턴스를 생성
String str4 = new String("abc"); // 새로운 String인스터스를 생성
== 주소비교
equals 내용비교
> 따라서 문자열 비교는 equals() 사용
문자열 리터럴
- 문자열 리터럴은 프로그램 실행시 자동으로 생성된다. (constant pool에 저장)
- 같은 내용의 문자열 리터럴은 하나만 만들어진다.
빈 문자열("", empty string)
- 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열
String str = ""; // str을 빈 문자열로 초기화
- 크기가 0 인 배열을 생성하는 것은 어느타입이나 가능
char[] chArr = new char[0]; //길이가 0인 char 배열
int[] iArr = {}; //길이가 0인 int 배열
- 문자(char)와 문자열(String)의 초기화
String s = ""; // 빈 문자열로 초기화
char c = ''; // 공백으로 초기화
String 클래스의 생성자와 메서드
메서드 / 설명 | 예제 | 결과 |
String(String s) 주어진 문자열s를 갖는 String인스턴스를 생성 |
String s = new String("Hello"); | s= "Hello" |
String(char[] value) 주어진 문자열(value)을 갖는 String인스턴스를 생성 char[] 를 String으로 바꿀때 사용 String을 char[]로 바꿀때는 toCharArray() |
char[] c = {'H','e','l','l','o'} String s = new String(c); |
s = "Hello |
String(StringBuffer buf) StringBuffer 인스턴스가 갖고 있는 문자열과 같은 내용의 String인스턴스를 생성 |
StringBuffer sb = new StringBuffer("Hello"); String s = new String(sb); |
s = "Hello |
char charAt(int index) 지정된 위치(index)에 있는 문자를 알려준다. (index 는 0부터 시작) |
String s = "Hello"; String n = "0123456"; char c = s.charAt(1); char c2 = n.charAt(1); |
c = 'e' c2 = '1' |
int compareTo(String str) 문자열(str)과 사전순서로 비교한다. 같으면 0을 사전순으로 이전이면 음수를 이후면 양수를 반환 |
int i = "aaa".compareTo("aaa"); int i2 = "aaa".compareTo("bbb"); int i3 = "bbb".compareTo("aaa"); |
i=0 같으면 0 i2= -1 왼쪽(aaa) 작으면 -1 i3 = 1 오른쪽 작으면 양수 |
String concat(String str) 문자열(str)을 뒤에 덧붙인다. |
String s = "Hello" String s2 = s.concat(" World"); |
s2= "Hello World" |
boolean containes(CharSequence s) 지정된 문자열(s)이 포함되었는지 검사한다. |
String s = "abcdefg"; boolean b = s.contains("bc"); |
b= true |
boolean endWith(String suffix) 지정된 문자열(suffix)로 끝나는지 검사한다. |
String file = "Hello.txt" boolean b = file.endsWith("txt") |
b= true |
boolean equals(Object obj) 매개변수로 받은 문자열(obj)과 String인스턴스의 문자열을 비교 obj가 String이 아니거나 문자열이 다르면 false반환 |
String s = "Hello" boolean b = s.equals("Hello"); boolean b2 = s.equals("hello"); |
b = true b2 = false |
boolean equalsIgnoreCase(String str) 문자열 String인스턴스의 문자열을 대소문자 구분없이 비교 |
String s = "Hello" boolean b = s.equalsIsIgnoreCase("HELLO"); boolean b2 = s.equalsIgnoreCase("heLLo"); |
b = true b2 = true |
int indexOf(int ch) 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려준다. 못 찾으면 -1을 반환 (index는 0부터 시작) |
String s = "Hello"; int idx1 = s.indexOf('o'); int idx2 = s.indexOf('k'); |
idx1= 4 idx2 = -1 |
int indexOf(int ch, int pos) pos 검색시작위치 주어진 문자(ch)가 문자열에 존재하는지 지정된 위치(pos)부터 확인하여 위치(index)를 알려준다. 못 찾으면 -1을 반환한다 (index는 0부터시작) |
String s = "Hello"; int inx1 = s.indexOf('e',0); int idx2 = s.indexOf('e',2); |
idx1 = 1 idx2 = -1 |
int idexOf(String str) 주어진 문자열이 존재하는지 확인하여 그 위치(index)를 알려준다. 없으면 -1을 반환한다. (index는 0부터 시작) |
String s = "ABCDEFG"; int idx = s.indexOf("CD"); |
idx=2 |
int lastIndexOf(int ch) 지정된 문자 또는 문자코드를 문자열의 오른쪽 끝에서부터 찾아서 위치(index)를 알려준다. 못 찾으면 -1을 반환한다. |
String s = "java.lang.Object"; int idx1 = s.lastindexOf('.'); int idx2 = s.indexOf('.'); |
idx1 = 9 idx2 = 4 |
int lastIndexOf(String str) 지정된 문자열을 인스턴스의 문자열 끝에서부터 찾아서 위치(index)를 알려준다. 못 찾으면 -1을 반환한다. |
String s = "java.lang.java"; int idx1 = s.lastIndexOf("java"); int idx2 = s.indexOf("java"); |
idx1 = 10 idx2 = 0 |
int length() 문자열의 길이를 알려준다. |
String s = "Hello"; int length = s.length(); |
length =5 |
String[] split (String regex) 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환한다. |
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)로 자른다. |
String animals = "dog,cat,bear"; String[] arr = animals.split(",",2); |
arr[0] = "dog" arr[1] = "cat,bear" |
boolean startsWith(String prefix) 주어진 문자열(prefix)로 시작하는지 검사한다. |
String s = "java.lang.Object"; boolean b = s.startWith("java"); boolean b2 = s.startWith("lang"); |
b = true b2 = false |
String substring(int begin) String substring(int begin, int end) 주어진 시작위치(begin)부터 끝 위치(end)범위에 포함된 문자열을 얻는다. 이 때, 시작위치의 문자는 범위에 포함되지만, 끝 위치의 문자는 포함되지 않는다. (begin <= x < end) |
String s = "java.lang.Object"; String c = s.subString(10); String p = s.subString(5,9); |
c="Object" p = "lang" |
댓글