String에 대해서
String은 Java에서 제공하는 문자열을 위한 클래스로, 문자열을 저장하고 다루는데 필요한 메서드를 제공한다.
문자열을 만드는 방법은 두가지로, 문자열 리터럴을 지정하는 것과 생성자를 이용하는 것이 있다.
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
String str4 = new String("hello");
str1과 str2는 문자열 리터럴 "hello"의 주소를 저장하지만, str3과 str4는 각각 새로운 String 인스턴스를 생성한다.
따라서 이 경우 문자열을 비교해보면 다음과 같은 결과가 나온다.
str1 == str2 // true
str1.equals(str2) // true
str3 == str4 // false
str3.equals(str4) // true
문자열의 비교와 관련한 내용은 예전 글에서 언급한 적이 있다.
https://hyunrian.tistory.com/4
Java에서 객체 값 비교하기: == vs equals()
개요 자바에서 `==`(등가비교 연산자)와 `equals()`는 두 객체의 값이 같은지 비교할 때 사용하며 비교 결과를 boolean 타입으로 반환한다. 둘은 비슷해 보이지만 반대의 결과가 나오기도 하기 때문에
hyunrian.tistory.com
기본적으로 변수를 선언할 때는 `int num = 0;`과 같이 각 타입의 기본값으로 초기화를 하지만
String은 null보다 빈 문자열로 초기화하는 것이 좋다.
String str = "";
지금까지 String에 대한 내용을 간략히 알아보았는데, 이번 글에서는 String 클래스의 몇가지 메서드를 살펴보려고 한다.
charAt()
`char charAt(int index)` : 특정 위치에 있는 문자 반환(index는 0부터 시작)
String s = "hello";
s.charAt(1); // 'e'
contains()
`boolean contains(CharSequence s)` : 문자열의 포함 여부 확인
String s = "hello";
s.contains("lo"); // true
endsWith()
`boolean endsWith(String suffix)` : 특정 문자열로 끝나는지 확인
String userImage = "profile.png";
userImage.endsWith("png"); // true
indexOf()
`int indexOf(int ch)`
- 대상 문자열에서 특정 문자의 위치(index) 반환
- 해당 문자가 존재하지 않으면 -1 반환
- 중복되는 문자의 경우 가장 앞에 있는 위치 반환
- 공백도 index에 포함
String s = "Birthday Gift"; // s.length() == 13
s.indexOf('b'); // -1
s.indexOf('G'); // 9
s.indexOf('i'); // 1
`int indexOf(String str)`
- 대상 문자열에서 특정 문자열의 시작 위치 반환
- 해당 문자열이 존재하지 않으면 -1 반환
String s = "Birthday Gift";
s.indexOf("day"); // 5
`int indexOf(int ch, int fromIndex)`
- 대상 문자열에서 특정 문자(ch)의 위치를 지정된 위치(fromIndex)부터 확인하여 반환
- 해당 문자가 존재하지 않으면 -1 반환
String s = "Birthday Gift";
s.indexOf('i', 3); // 10
length()
`int length()` : 문자열의 전체 길이 반환(공백 포함)
String s = "Hello World";
s.length(); // 11
replace()
`String replace(char oldChar, char newChar)`
- 대상 문자열에서 특정 문자를 새로운 문자로 바꾸어 반환
- 특정 문자가 여러개일 경우 모두 변환
String s = "abbc";
s.replace('b', 'q'); // "aqqc"
`String replace(CharSequence target, CharSequence replacement)`
- 대상 문자열에서 특정 문자열을 새로운 문자열로 바꾸어 반환
- 특정 문자열이 여러개일 경우 모두 변환
String s = "merry merry christmas";
s.replace("merry", "MERRY"); // "MERRY MERRY christmas"
trim()
`String trim()` : 문자열의 앞 뒤 공백 제거
String s = " [Hello World] ";
s.trim(); // "[Hello World]"