문자열(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 |