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 |