■ String 클래스
: 문자열을 저장하고 이를 다루는데 필요한 메서드 제공
변경 불가능한 클래스
※ 한번 생성된 String인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경할 수는 없다.
문자열의 비교
String str1 = "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장됨
String str2 = "abc"; // 문자열 리터럴 "abc"의 주소가 str2에 저장됨
String str3 = new String("abc"); // 새로운 String인스턴스를 생성
String str4 = new String("abc"); // 새로운 String인스턴스를 생성
- str1, str2은 같은 주소를 가리킴
- str3, str4은 다른 주소를 가리킴
문자열 리터럴
★ 같은 내용의 문자열 리터럴은 한번만 저장된다.
빈 문자열
- 길이가 0인 배열 존재 가능
char[] chArr = new char[0]; // 길이가 0인 char배열
int[] iArr = {}; // 길이가 0인 int배열
String s = ""; // 빈 문자열로 초기화
char c = ' '; // 공백으로 초기화
★ String클래스의 생성자와 메서드
메서드 | 설명 | 예제 | 결과 |
String(String s) | 주어진 문자열(s)을 갖는 String인스턴스를 생성한다. | String s = new String("Hello"); | s = "Hello" |
String(char[] value) | 주어진 문자열(value)을 갖는 String인스턴스를 생성한다. | char[] c = {'H','e','l','l','o'}; String s = new String(c); |
s = "Hello" |
String(StringBuffer buf) | StringBuffer인스턴스가 갖고 있는 문자열과 같은 내용의 String인스턴스를 생성한다. | StringBuffer sb = new StirngBuffer("Hello"); String s = new String(sb); |
s = "Hello" |
char charAt(int index) | 지정된 위치에 있는 문자를 알려준다. | String s = "Hello"; char c = s.charAt(1); |
c = 'e' |
int compareTo(String str) | 문자열과 사전순서로 비교한다. 같은면 0, 이전이면 1, 이후면 -1 |
int i = "aaa".compareTo("aaa"); | i = 0 |
String concat(String str) | 문자열(str)을 뒤에 덧붙인다. | String s = "Hello"; String s2 = s.concat("World"); |
s2 = "Hello World" |
boolean contains(CharSequence s) | 지정된 문자열(s)이 포함되었는지검사한다. | String s = "abcdefg"; boolean b = s.contains("bc"); |
b = true |
boolean endsWith(String suffix) | 지정된 문자열(suffix)로 끝나는지 검사한다. | String file = "Hello.txt"; boolean b = file.endsWith("txt"); |
b = true |
boolean equals(Object obj) | 매개변수로 받은 문자열과 Stirng인스턴스의 문자열을 비교한다. | Stirng s = "Hello"; boolean b = s.equals("Hello"); boolean b2 = s.equals("hello"); |
b=true b2=false |
boolean equalsIgnoreCase(String str) | 문자열과 String인스턴스의 문자열을 대소문자 구분없이 비교한다. | 생략 | 생략 |
int indexOf(int ch) | 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치를 알려준다.못 찾으면 -1을 반환 | String s = "Hello"; int idx1 = s.indexOf('o'); int idx2 = s.indexOf('k'); |
idx1 = 4 idx2 = -1 |
int indexOf(int ch, int pos) | 주어진 문자(ch)가 문자열에 존재하는지 지정된 위치(pos)부터 확인하여 위치를 알려준다. 못 찾으면 -1을 반환 | 생략 | 생략 |
int indexOf(String str) | 주어진 문자열이 존재하는지 확인하여 그 위치를 알려준다 | 생략 | 생략 |
Stirng inturn() | 문자열을 상수풀에 등록한다. 이미 상수풀에 같은 내용의 문자열이 있을 경우 그 문자열의 주소값을 반환한다. |
String s = new String("abc"); String s2 = new String("abc"); boolean b = (s==s2); boolean b2 = s.equals(s2); boolean b3 = (s.inturn()==s2.inturn()); |
b = false b2 = true b3 = true |
int lastIndexOf(int ch) | 지정된 문자 또는 문자코드를 문자열의오른쪽 끝에서부터 찾아서 위치를 알려준다. | 생략 | 생략 |
int lastIndexOf(String str) | 지정된 문자열을 인스턴스의 문자열 끝에서부터 찾아서 위치를 알려준다. | 생략 | 생략 |
int length() | 문자열의 길이를 알려준다. | String s = "Hello"; int length = s.length(); |
length = 5 |
String replace(char old, charnw) | 문자열 중의 문자(old)를 새로운 문자(nw)로 바꾼 문자열을 반환한다. | String s = "Hello"; int length = s.replace('H', 'C'); |
length = "Cello" |
String replace(CharSequence old, CharSequence nw) | 문자열 중의 문자열(old)을 새로운 문자열(nw)로 모두 바꾼 문자열을 반환한다. | String s ="Hellollo"; String s1 = s.replace("ll","LL"); |
s1 = "HeLLoLLo" |
String replaceAll(String regex, String replacement) | 문자열 중에서 지정된 문자열과 일치하는 것을 새로운 문자열로 모두 변경한다. | 생략 | 생략 |
String replaceFirst(String regex, String replacement) | 문자열 중에서 지정된 문자열과 일치하는 것 중, 첫 번째 것만 새로운 문자열로 변경한다. | 생략 | 생략 |
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 substring(int begin) String substring(int begin, int end) |
주어진 시작위치부터 끝 위치 범위에 포함된 문자열을 얻는다. 이 때, 시작위치의 문자는 범위에 포함되지만, 끝 위치의 문자는 포함되지 않는다 | String s = "java.lang.Object"; String c = s.substring(10); String p = s.substring(5,9); |
c = "Object" p = "lang" |
String toLowerCase() | String인스턴스에 저장되어 있는 모든 문자열을 소문자로 변환하여 반환한다. | 생략 | 생략 |
String toString() | String인스턴스에 저장되어 있는 문자열을 반환한다. | String s = "Hello"; String s1 = s.toString(); |
s1 = "Hello" |
String toUpperCase() | String인스턴스에 저장되어 있는 모든 문자열을 대문자로 변환하여 반환한다. | 생략 | 생략 |
String trim() | 문자열의 왼쪽 끝과 오른쪽 끝에 있는 공백을 없앤 결과를 반환한다. | 생략 | 생략 |
static String valueOf(...) | 지정된 값을 문자열로 변환하여 반환한다. 참조변수의 경우, toString()을 호출한 결과를 반환한다. | 생략 | 생략 |
join()과 StringJoiner
join() : 여러 문자열 사이에 구분자를 넣어서 결합한다.
String animals = "dog,cat,bear";
String[] arr = animals.split(",");
String str = String.join("-",arr);
System.out.println(str);
// result > dog-cat-bear
StringJoiner 클래스 사용하여 문자열 결합
StringJoiner sj = new StringJoiner(",","[","]");
String[] strArr = { "aaa", "bbb", "ccc" };
for(String s : strArr)
sj.add(s.toUpperCase());
System.out.println(sj.toString());
// result > [AAA,BBB,CCC]
문자 인코딩 변환
getBytes(String charsetName) : 문자열의 문자 인코딩을 다른 인코딩으로 변경할 수 있다.
byte[] utf8_str = "가".getBytes("UTF-8"); // 문자열을 UTF-8로 변환
String str = new String(utf8_str, "UTF-8"); // byte배열을 문자열로 변환
String.format()
: 형식화된 문자열을 만들어내는 간단한 방법
String str = String.format("%d 더하기 %d는 %d입니다.", 3, 5, 3+5);
System.out.println(str);
//result > 3더하기 5는 8입니다.
기본형 값을 String으로 변환
int i = 100;
String str1 = i + ""; // 100을 "100"으로 변환하는 방법1
String str2 = String.valueOf(i); // 100을 "100"으로 변환하는 방법2
String을 기본형 값으로 변환
int i = Integer.parseInt("100"); // "100"을 100으로 변환하는 방법1
int i2 = Integer.valueOf("100"); // "100"을 100으로 변환하는 방법2
기본형 -> 문자열 | 문자열 -> 기본형 |
String String.valueOf(boolean b) String String.valueOf(char c) String String.valueOf(int i) String String.valueOf(long l) String String.valueOf(float f) String String.valueOf(double d) |
boolean Boolean.parseBoolean(String s) byte Byte.parseBoolean(String s) short Short.parseBoolean(String s) int Integer.parseBoolean(String s) long Long.parseBoolean(String s) float Float.parseBoolean(String s) double Double.parseBoolean(String s) |
int val = Integer.parseInt(" 123 ".trim()); // 문자열 양 끝의 공백을 제거 후 반환
'Language > java' 카테고리의 다른 글
java.lang 패키지(Math 클래스) (0) | 2022.07.14 |
---|---|
java.lang 패키지(StringBuffer, StringBuilder 클래스) (0) | 2022.07.14 |
Java_Study_ java.lang 패키지(Object클래스) (0) | 2022.07.12 |
Java_Study 예외처리 (0) | 2022.07.11 |
Java_Study 객체지향 프로그래밍_내부 클래스 (0) | 2022.07.07 |
댓글