본문 바로가기
부트캠프/코드스테이츠 백엔드부트캠프 43기

코드스테이츠 백엔드 부트캠프 43기 (5일차-Java 회고)

by 고구마는호박고구마 2022. 12. 21.

자바

오늘은 비교적 쉬운부분이였다. 자바 기초를 혼자 공부하면서 학부때 내가 중요하게 생각하지 않고 넘겼던 부분들을 지금 부트캠프 과정에서 최대한 집중해서 배우려고 노력하고 있다.

 

String은 프로젝트를 할 때도, 코딩테스트를 할 때도 많이 중요하고 String 클래스에 좋은 기능들이 많이 있다.

그렇기에 String은 int나 char 등 다른 변수들과 다르게 클래스로 설정이 되어있다.

 


StringTokenizer 란?

문자열을 우리가 지정한 구분자 로 문자열을 쪼개주는 클래스이다.

import java.util.StringTokenizer;

public static void main(String[] args){
	String str = "This is a string example using StringTokenizer";
	StringTokenizer tokenizer = new StringTokenizer(str);
	System.out.println("total tokens:"+tokenizer.countTokens());
	//tokenizer.countTokens() 몇개가 쪼개 졌는지? 7개
    
    
	while(tokenizer.hasMoreTokens()){
		System.out.println(tokenizer.nextToken()); //쪼갠 토큰 값을 하나씩 출력 
	}
	System.out.println("total tokens:"+tokenizer.countTokens()); // 토큰을 다 사용 0개 출력
}

This 따로 is 따로 a 따로 출력이 가능 

여기서 의문점 split() 를 사용하면 되는데 왜 굳이 StringTokenizer를 사용?

단순하다. 속도, 효율 등이 StringTokenizer가 우수하기 때문

split 같은 경우는 내부가 매우 복잡.

String str = "aa!!aa!!ss";
StringTokenizer st = new StringTokenizer(str,"!!");
System.out.println(st.nextToken());  //aa 출력 
System.out.println(st.nextToken());  //aa 출력
System.out.println(st.nextToken());  //bb 출력

 


1. String 은 언제 사용?
String은 불변성 = 변하지 않는다.
자주 변하지 않는 문자열일 때 String 사용.


2. StringBuilder는 언제 사용?
StringBuilder는 동기화를 지원하지 않는다.

속도는  StringBuilder > StringBuffer  
단일스레드 환경에서 문자열이 자주 변경되는 경우 StringBuilder를 사용하는 것이 성능면에서 유리하다.

3. StringBuffer는 언제 사용?
StringBuffer는 동기화를 지원하여 멀티 스레드 환경에서도 동작가능.
멀티 스레드 환경 에서 문자열이 자주 변겅되는 경우 StringBuffer를 사용하는 것이 성능면에서 유리할 것입니다.

댓글