본문 바로가기

Back-End/JAVA

문자열(String)의 메서드

문자열(String)은 불변(Immutable)

- 문자열 스스로를 변경하는 메서드는 없다. => 새 문자열 또는 다른 값을 반환

boolean 타입 반환 메서드

- str.isEmpty() - 문자열의 길이가 0인지 여부
- str.isBlank() - 공백을 제외한 문자열의 길이가 0인지 여부
- str1.contains(str2) - str1(기준) 문자열 안에 str2 문자열에 해당하는 것이 있으면 true, 없으면 false 반환

문자타입 반환 메서드

str.charAt(str의 인덱스) - N번째 문자 반환
str.charAt(str.length() - 1) - 문자열의 마지막 문자 얻기

문자열의 위치 반환 메서드(int형으로 반환)

- str.indexOf('문자') -  문자열에서 인자의 '문자'와 일치하는 인덱스 위치를 반환
- str.indexOf('문자', N) - 문자열에서 N번째 이후부터 인자의 '문자'와 일치하는 인덱스 위치를 반환
- str.indexOf("문자열") - 문자열도 가능
- str.lastIndexOf("문자열") - 맨 뒤에서부터 찾고 인자의 문자열과 같은 것을 찾아 인덱스 위치를 반환
* 포함하지 않으면 -1 반환

문자열을 문자 배열로 반환 메서드

- char[] chArr = str.toCharArray() - 문자열을 분할하여 문자의 배열로 반환

문자열 비교(이 부분은 한눈에 안 들어올 수 있으니 코드를 직접 짬)

String str1 = "ABC";
String str2 = "ABCDE";
String str3 = "BCDE";
String str4 = "abc";

//만약 문자열이 서로 일치한다면 0 반환
int compare1 = str1.compareTo(str1); // 0반환

// 시작하는 부분이 같을 때는 글자 길이의 차이 반환
int compare2 = str1.compareTo(str2); // -1반환
int compare3 = str1.compareTo(str3); // -1반환

// compareTo는 대소문자도 구별함 a와 A는 다르게 봄
int compare4 = str1.compareTo(str4); // -32반환

// 대소문자 구분 없이 비교하려면 compareToIgnoreCase를 사용
int compare5 = str1.compareToIgnoreCase(str4); //0을 반환

compareTo 메서드는 두 문자열을 문자 하나하나씩 사전 순으로 비교하면서 첫 번째로 다른 문자들의 Unicode 값 차이를 반환한다!
먼저 compare3 변수를 보자. "ABCE" vs "BCDE"
첫 번째 문자 비교  : 'A' (65)와 'B'(66) 가 서로 다르므로 65 - 66 = -1이 반환되는 것이다.
이렇게 서로 다른 문자를 만나게 되면 바로 유니코드 값을 비교하고 차이를 내준 값을 반환하고 종료한다.

그럼 compare2 변수를 보자. "ABC" vs "ABCDE"
1. 첫 번째 문자 비교:

'A' (65)'A' (65)는 같음.

2. 두 번째 문자 비교:
'B' (66)'B' (66)는 같음.

3. 세 번째 문자 비교:
'C' (67)'C' (67)는 같음.

4. 한 문자열이 끝남:
str1은 끝났지만, str2는 네 번째 문자 'D'가 있음.

*참고) 만약 두 문자열이 같을 때,  첫 번째 문자열 기준 비교 문자열 보다 길이가 짧으면 -1 반환, 길면 1반환 (이때는 유니코드의 차로 x)

타 자료형을 문자열로 변환

String str1 = String.valueOf(true); // "true"
String str2 = String.valueOf(false); // "false"
String str3 = String.valueOf(123); // "123"
String str4 = String.valueOf(3.14f); // "3.14"
String str5 = String.valueOf('가'); // "가"

문자열을 타 자료형으로 변환

String str = "123";
char chr = str;
//  문자열을 정수 자료형으로 변환하기
byte bytNum = Byte.parseByte(str);
short srtNum = Short.parseShort(str);
int intNum = Integer.parseInt(str);
long lngNum = Long.parseLong(str);

//  대소문자 무관 'true'일 때 true 반환
boolean bool1 = Boolean.parseBoolean("TRUE"); // true
boolean bool2 = Boolean.parseBoolean("true"); // true
boolean bool3 = Boolean.parseBoolean("T"); // false

// 문자열에서 문자 반환
char chr = str.charAt(0); // str의 0번째 인덱스 1 반환

주의!  만약 문자열이 "12345"를 byte로 바꾸거나 "123.45"를 int로 바꾼다면 런타임 에러가 발생한다. 이때는 캐스팅이 작동되지 않아
문자열을 자르거나 변환시키지 않음!!

'Back-End > JAVA' 카테고리의 다른 글

람다식과 함수형 인터페이스  (0) 2025.02.06
Math, Random 클래스  (2) 2024.11.19
래퍼 클래스  (0) 2024.11.19
불변 String 클래스와 가변 StringBuilder  (1) 2024.11.19
람다와 스트림  (1) 2024.11.19