String 클래스
String 클래스는 API문서의 java.lang 패키지에서 찾아볼 수 있습니다. 자바 API문서는 아래 링크를 참조하시면 됩니다.
그렇다면 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 |