본문 바로가기
프로그래밍 언어/자바

자바 문자열 다루기 #1

by 블루데이제이 2022. 9. 12.
728x90
반응형

String 클래스

String 클래스는 API문서의 java.lang 패키지에서 찾아볼 수 있습니다. 자바 API문서는 아래 링크를 참조하시면 됩니다.

 

https://docs.oracle.com/javase/8/docs/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는 객체끼리의 값을 비교하는 메소드이고 ==는 객체의 참조(주소)값을 비교하는 연산자입니다.

728x90
반응형

'프로그래밍 언어 > 자바' 카테고리의 다른 글

벡터와 해시테이블  (0) 2022.09.12
자바 문자열 다루기 #2  (0) 2022.09.12
자바 클래스와 객체 #6  (0) 2022.09.12
자바 클래스와 객체 #5  (0) 2022.09.12
자바 클래스와 객체 #4  (0) 2022.09.11