String 클래스
String 클래스는 API문서의 java.lang 패키지에서 찾아볼 수 있습니다. 자바 API문서는 아래 링크를 참조하시면 됩니다.
Java Platform SE 8
docs.oracle.com
그렇다면 String 클래스를 사용하기 위해서는 import java.lang.String 해주지 않을까?
자바는 기본적으로 java.lang 패키지를 자동으로 import해 줍니다. 그래서 따로 import 작업을 해주지 않아도 됩니다.
java.lang.String 클래스의 주요 메소드
■ char charAt(index) : 주어진 위치의 한 문자 리턴
■ boolean endsWith(String suffix) : 문자열이 suffix로 끝나면 true
■ boolean equals(Object obj) : 문자열이 obj와 같다면 true(대소문자 구분)
■ boolean equalsIgnoreCase(String str) : 문자열이 str과 같다면 true(대소문자 구분 안함)
■ int indexOf(int ch) : 문자열에서 ch 문자가 포함되어 있는 위치, 포함되어 있지 않으면 -1리턴
■ int indexOf(String str) : 문자열에서 str 문자열이 포함되어 있는 위치, 포함되어 있지 않으면 -1리턴
■ int indexOf(String str, int fromIndex) : fromIndex 이후의 문자열에서 str문자열이 포함되어 있는 위치, 포함되지 않으면 -1리턴
■ int lastIndexOf(String str) : 문자열에서 str 문자열이 포함되어 있는 위치(뒤에서 계산), 포함되어 있지 않으면 -1리턴
■ int length() : 문자열의 길이 리턴
■ String replace(char oldChar, char newChar) : oldChar 문자를 newChar문자로 교체
■ String replaceAll(String regex, String replacement) : regex 문자를 replacement문자로 교체
■ boolean startsWith(String prefix) : 문자열이 prefix로 시작하면 true
■ String substring(int beginIndex) : 주어진 위치 이후의 문자열을 리턴
■ String substring(int beginIndex, int endIndex) : beginIndex부터 endIndex까지의 문자열 리턴
■ String toLowerCase() : 모든 문자열을 소문자로 바꾼다
■ String toUpperCase() : 모둔 문자열을 대문자로 바꾼다
■ String trim() : 문자열 시작과 끝에 있는 공백 제거
■ String valueOf(boolean ) : boolean형을 String형으로 변환
■ String valueOf(char c) : char형을 String형으로 변환
■ String valueOf(int i) : int형을 String형으로 변환
■ String valueOf(double d) : double형을 String형으로 변환
※ 더많은 API는 자바API문서를 참조하시길 바랍니다.
몇가지 예제를 통해 String 클래스를 알아보도록하겠습니다.
package com.bluedayj;
public class StringTest {
public static void main(String[] args) {
String str = "Good Morning";
System.out.println("charAt : " + str.charAt(7));
System.out.println("endsWith : " + str.endsWith("good"));
System.out.println("equals : " + str.equals("good morning"));
System.out.println("equalsIgnoreCase : " + str.equalsIgnoreCase("good morning"));
System.out.println("indexOf : " + str.indexOf("Mor"));
System.out.println("lastIndexOf : " + str.lastIndexOf("Mor"));
System.out.println("length : " + str.length());
System.out.println("replace : " + str.replace("Good", "a"));
System.out.println("replace : " + str.replace("[Good]", "a"));
System.out.println("replaceAll : " + str.replaceAll("Good", "a"));
System.out.println("replaceAll : " + str.replaceAll("[Good]", "a"));
}
}

replace와 replaceAll 차이점
replace와 replaceAll은 비슷한 기능을 가지고 있지만 다소 차이점이 있습니다.
위 소스 코드 보면
str.replace("Good", "a") : Good이라는 문자열을 a문자로 교체합니다.
str.replaceAll("Good", "a") : replace기능과 마찬가지로 Good이라는 문자열을 a문자로 교체합니다.
그러나
str.replace("[Good]", "a") : [Good]라는 문자가 없어서 교체되지 않습니다.
str.replaceAll("[Good]", "a") : replaceAll에서의 '[]' 는 문자가 아닌 정규식으로 'G' or 'o' or 'o' or 'd'를 a문자로 교체합니다. 그래서 Good Morning => aaaa Marning으로 교체된 것입니다.
equals 와 ==
equals와 == 의미상 서로 같다면으로 해석합니다.
다음 예제에서는 약간 다르게 출력됩니다.
package com.bluedayj;
public class EqualsTest {
public static void main(String[] args) {
String str1 = "aaa";
String str2 = "aaa";
System.out.println(str1 == str2);
String str3 = new String("aaa");
String str4 = new String("aaa");
System.out.println(str3 == str4);
System.out.println(str1 == str4);
}
}

첫 번째는 true이지만 두 번째와 세 번째는 false가 출력됩니다.
분명 같은 "aaa"인데 말입니다.
equals는 객체끼리의 값을 비교하는 메소드이고 ==는 객체의 참조(주소)값을 비교하는 연산자입니다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
벡터와 해시테이블 (0) | 2022.09.12 |
---|---|
자바 문자열 다루기 #2 (0) | 2022.09.12 |
자바 클래스와 객체 #6 (0) | 2022.09.12 |
자바 클래스와 객체 #5 (0) | 2022.09.12 |
자바 클래스와 객체 #4 (0) | 2022.09.11 |