본문 바로가기

언어/Java

문자열 클래스

  String StringBuilder
사용법 편리 불편
String s = "Hi"; StringBuilder sb = new StringBuilder("Hi");
결합연산자 + 없음
sop(s+"JAVA"); sop(sb.append("JAVA"));
객체내용 불변 가변
Hi+"JAVA" 시 새로운 String 객체 만들어짐 sb.append("JAVA") 시 기본 String 객체의 내용이 변경됨
(메모리가 효율적)
equals() 재정의 됨 재정의 안됨
String s1 = "Hi";
String s2 = "Hi"; 
String s3 = new String("Hi");
String s4 = new String("Hi");
s1.equals(s2); // true
s1.equals(s3); // true
s3.equals(s4); // true
모양 동일하면 같은 메모리번지 참조
s1==s2; // true
s1==s3; // false
s3==s4; // false
StringBuilder sb1 = new StringBuilder("Hi");
StringBuilder sb2 = new StringBuilder("Hi");
sb1.equals(sb2); // false
String s5 = sb1.toString(); (StringBuilder를 String으로 변환)
import java.util.StringTokenizer;

public class StringTest {
	public static void main(String[] args) {
		/*
		String s = "HELLO";
		char c = s.charAt(0); //'H'
		int size = s.length();	// 5, 여기에선 length 메서드, 배열은 그냥 length
		*/
		
		String s = "안녕하세요";
		char c = s.charAt(0); //'안'
		int size = s.length();	// 5, 여기에선 length 메서드
		
		s = "가나다라다나가";
//		System.out.println("Palindrome문자열입니다");
//		System.out.println("Palindrome문자열이 아닙니다");
		
        /*
		if(s.charAt(0) != s.charAt(size-1)) {
			System.out.println("Palindrome문자열이 아닙니다");
		} else if(s.charAt(1) != s.charAt(size-1-1)){
			System.out.println("Palindrome문자열이 아닙니다");
		} else if(s.charAt(2) != s.charAt(size-1-2)){
			System.out.println("Palindrome문자열이 아닙니다");
		} else {
			System.out.println("Palindrome문자열입니다");
		}
		*/
        
		size = s.length();
		int i = 0;
		for(; i<size/2; i++) {
			if(s.charAt(i) != s.charAt(size-1-i)) {
				break;
			}
		}
        
		if(i == size/2) {
			System.out.println("Palindrome문자열입니다");
		} else {
			System.out.println("Palindrome문자열이 아닙니다");
		}
		
		s = "100:70:65";
		String delim = ":";
		String[]arr = s.split(delim);	//split의 결과는 string 배열
		for(String str:arr) {
			System.out.println(Integer.parseInt(str));
		}
		
		s = "100::65";	// 국어 수학 영어점수인데 수학은 응시를 안했다.
		String[]arr1 = s.split(delim);	//split의 결과는 string 배열
		for(String str:arr1) {	//"100", "", "65"
			if(str.equals("")) {
				System.out.println("미응시");
			} else {
				System.out.println(Integer.parseInt(str));
			}
		}
		
		System.out.println("--------------------------");
		StringTokenizer st = new StringTokenizer(s, delim);
        // StringTokenizer은 빈 문자열을 분리하지않음
		// StringTokenizer은 의미없는 것(토큰이 아닌것)은 분리하지 않음.
		while(st.hasMoreTokens()) {
			String str = st.nextToken();	// "100","65"
			System.out.println(str);
		}
	}
}

결과

 

'언어 > Java' 카테고리의 다른 글

포장 클래스(Wrapper class)  (0) 2023.08.08
정규표현식(regex)  (0) 2023.08.08
롬복(Lombok)  (0) 2023.08.08
java.base 모듈  (0) 2023.08.08
API 도큐먼트  (0) 2023.08.08