[Spring] springBuffer , springBuilder, springTokenizer, split

hyewon jeong·2024년 2월 19일
0

Spring

목록 보기
55/59

🎈 1. springTokenizer VS split

  • 문자열이 특정구분자로 (이를 Delimeter 라 한다.)로 연결되어 있으면 2가지 방법으로 문자열을 쪼갠다.
  1. java.util.Tokenizer
  2. String.split
  • 1 과 2의 차이는 1은 정규표현식, 2는 문자로 구분을 한다는 것이다.

📍 1-1. split()


	    String test = "안녕하세요, 만나서-반가워요";
        
		String[] tokens = test.split(",|-");
		for (String token : tokens) {
			System.out.println("token"+token);
		}

📍 1-2. springTokenizer

String test = "안녕하세요, 만나서-반가워요";
    
		StringTokenizer s = new StringTokenizer(test,"-");
		int tokenCount = s.countTokens();

		for (int i = 0; i <tokenCount ; i++) {
			String tok = s.nextToken();
			System.out.println("StringTokenizer"+tok);
		}
  • countTokens() : return int, 구분자로 구분된 토큰들의 갯수를 리턴
  • nextToken() : return String, 다음 번 token 을 리턴.

🎈 2. springBuffer VS springBuilder

  • springBuffer VS springBuilder 를 이용해 문자열을 합치는 이유는?
    예를 들어 str = "ABC" 이고 "DEF" 를 합치기 위해 str+= "ABCDEF" 로 문자열 합치는 것이 가능하다.
    하지만
    이렇게 한경우 스택영역의 데이터 변수가 가리키는 주소값이 메모리영역의 "ABC"에서 새로 생성된 "ABCDEF"객체로 변경이 되는것이다. 즉 ABC 객체가 ABCDEF 로 바뀌는 것이 아니므로 , 이는 메모리의 낭비를 유도하고 프로그램 성능을 저하한다.
  • 이런 이유로 아래의 두 클래스를 이용하여 내부 버퍼를 이용해 문자열 수정작업을 진행하므로 새 객체를 생성하지 않는다.!

이 두 클래스의 차이?

📍 2-1. springBuffer

  • SpringBuffer 는 동기화가 적용되어 있어 멀티스레드에서 안전하다.

📍 2-2. springBuilder

  • Builder 는 그렇지 않다.
  • StringBuilder sb = new StringBuilder(); : 기본형
  • StringBuilder sb = new StringBuilder(5); : 5 크기 만큼의 문자들을 저장할 수 있는 버퍼 생성. 자동으로 버퍼크기는 증가.
  • StringBuilder sb = new StringBuilder("d36choi"); : 문자열이 주어지는 경우엔 이 매개값을 버퍼의 초기값으로 지정.
    StringBuilder sb = new StringBuilder();
    sb.append("hi"); // 문자열을 뒤에 붙인다.
    sb.append(" i'm choi");
    System.out.println(sb.toString()); // 문자열로 출력시 toString을 이용한다.
    sb.delete(0, 2); // 2번째 문자까지 삭제.
    System.out.println(sb.toString());

참고자료
https://choichumji.tistory.com/99

profile
개발자꿈나무

0개의 댓글