본문 바로가기
Language/java

Java_Study_ java.lang 패키지(String클래스)

by gamxong 2022. 7. 12.

 

■ 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());  // 문자열 양 끝의 공백을 제거 후 반환

 

댓글