Java

[자바]String Buffer와 String Builder 그리고 Date

어텀잉 2023. 10. 16. 17:40
728x90
반응형
SMALL

String Buffer와 String Builder의 공통점과 차이점

공통점  

(1)  둘 다 문자열을 다루는 클래스
(2)  문자열을 (유)동적으로 변경하는 데 사용

 

String Buffer

  • 가변 클래스
  • 문자열을 효율적으로 다루기 위한 클래스 바뀌거나 바뀔 수 있는 문자열을 나타내고 문자열이 변경이나 조작이 필요한 경우 사용
  • 스레드 안전(Thread-safe)
  • 멀티 스레드 환경에서 여러 스레드가 동시에 접근해도 데이터 무결성 유지(안전)
  • 동기화가 적용되어 성능면에서 Builder보다 느릴 수 있음 

문자열 추가

	StringBuffer sb = new StringBuffer(); // StringBuffer 생성
		
		//문자열 추가
		sb.append("Hello");
		sb.append("Java");
		sb.append("StringBuffer");

 

문자열 삽입

	StringBuffer sb = new StringBuffer(); // StringBuffer 생성
    
    		//문자열 삽입
                sb.insert(6, "Eclpse");
                System.out.println(sb.toString());

 

문자열 변경

	StringBuffer sb = new StringBuffer(); // StringBuffer 생성
    		
       		 //문자열 변경
                sb.replace(13,17, "WoW");
                System.out.println(sb.toString());

 

문자열 삭제

	StringBuffer sb = new StringBuffer();// StringBuffer 생성
    
  	  	//문자열 삭제
		sb.delete(13,17);
		System.out.println(sb.toString());

 

 

String Builder

  • 가변 클래스(바뀌거나 바뀔 수 있는 클래스)
  •  문자열을 효율적으로 조작할 수 있게 해주는 클래스
  •  문자열을 변경할 때마다 새로운 문자열 객체를 생성하는 것이 아니라 문자열을 수정하는 방식으로 동작
  • 단일 스레드(하나의 스레드) 사용하기에 적합 / 성능이 빠름
  • 메모리를 절약할 수 있음
  • 스레드 간에 동기화 관련 문제가 없음
  • 스레드 간에 오버헤드가 없음.
                       *오버헤드(overhead) : 어떤 작업을 수행할 때 추가적으로 필요한 자원, 시간, 비용 등
package com.kh.api.exam1;

public class StringBuilderMain {
	
	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		
		sb.append("Hello, ");
		sb.append("World");
		
		String result = sb.toString();
		
		System.out.println(result);
		
		//문자열 삽입
		sb.insert(7,"java");//7번째 위치에 자바 삽입한다는 뜻
		System.out.println(sb);
		
		sb.delete(1,7);
		System.out.println(sb);
		
		//문자열 대체
		sb.replace(1,7,"자바최고당");
		System.out.println(sb);
		
		sb.reverse();
		System.out.println(sb);
	}

}

 

 

 Date :

  • 날짜와 시간정보를 나타내는 데 사용
  •  자바 1 이후 권장되지 않음
<코드 사용예제>
	    LocalDate today = LocalDate.now();
        	//현재 날짜
        
		LocalDateTime currentDateTime = LocalDateTime.now();
		//현재 날짜와 시간
        
		LocalTime currentTime = LocalTime.now();
		//현재 시간
        
		for(int i=0;i<8;i++) {
			System.out.println(currentTime);
		}
        
		LocalDate future1 = today.plusDays(5);
		LocalDate future3 = future2.plusDays(103);
		LocalDate past1 = today.minusYears(5);
		LocalDate date1 = LocalDate.of(2021,3,19);

		boolean isBefore =true;
		if(date1.isBefore(date2)) {
			//date1+"는"+date2+"의 이전 날짜입니다
		}else if(date2.isAfter(date2)) {
			//date1+"의 이후 날짜입니다
		}else {
			System.out.println(date1);
		}
		System.out.println(true);
	
	}

}

 

출력결과ㄱㄱ

 

 

언젠가는 이 짤을 쓸 수 있길 바라며,,,,,,,,,,,,,,

 

 

 

728x90
반응형
LIST

'Java' 카테고리의 다른 글

[jdbc]MVC  (0) 2023.10.19
[JDBC]이클립스와 DB 연결하기  (0) 2023.10.17
[자바] StringTokenizer와 Replace  (0) 2023.10.16
[자바] 프로그래머스 피자나눠먹기(1)(2)(3)  (0) 2023.09.20
[자바] 코딩문제 풀기!!!!  (0) 2023.09.14