Stringbuffer
StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("jump to java");
String result = sb.toString();
System.out.println(result); // "hello jump to java" 출력
StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append(" ");
sb.append("jump to java");
String result = sb.toString();
System.out.println(result);
StringBuffer는 멀티 스레드 환경에서 안전하다는 장점이 있고 StringBuilder는 StringBuffer보다 성능이 우수한 장점이 있다. 따라서 동기화를 고려할 필요가 없는 상황에서는 StringBuffer 보다는 StringBuilder를 사용하는 것이 유리하다.
- StringBuilder의 사용법과 주요메서드
- .append(): 문자열을 추가한다. (sb.append("bbb"), sb.append(4))
- .insert(int offset, String str): offset 위치에 str을 추가한다. (sb.insert(2, "ccc"))
- .replace(): 첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다. (.replace(3, 6, "ye"))
- .substring(int start, (int end)): 인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱 (sb.substring(5), sb.substring(3, 7))
- .deleteCharAt(int index): 인덱스에 위치한 문자 하나를 삭제한다. (sb.deleteCharAt(3))
- .delete(int start, int end): start 부터 end-1 까지의 문자를 삭제한다. (sb.delete(3, sb.length()))
- .toString(): String으로 변환한다. (sb.toString())
- .reverse(): 해당 문자 전체를 뒤집는다. (sb.reverse())
- .setCharAt(int index, String s): index 위치의 문자를 s로 변경
- .setLength(int len): 문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워짐, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제
- .trimToSize(): 문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정, String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 됨
insert
StringBuffer sb = new StringBuffer();
sb.append("jump to java");
sb.insert(0, "hello ");
System.out.println(sb.toString());
substring
StringBuffer sb = new StringBuffer();
sb.append("Hello jump to java");
System.out.println(sb.substring(0, 4));
//Hell 출력
BufferReader와 Scanner의 차이
- Scanner
입력 받을 때 정수, 소수, 문자 데이터도 구분지어 읽어들일 수 있다.
BufferReader 보다 속도 면에서 불리하다는 큰 단점이 존재한다.
- BufferReader

( 한번 삽질하러 가기보단 여러번모아서 한번에 보내는게 좋다고 이해했다)
BufferReader는 개행문자(엔터)만 경계로 인식하고 입력된 데이터의 형식이 'String으로 고정'되기 때문에 데이터를 따로 가공해주어야 한다.
인터페이스
-
인터페이스란? 추상 메서드의 집합.
-
인터페이스의 구현이란? 추상메서드 몸통{} 만들기 ( 미완성 설계도 완성하기 )
-
추상클래스와 인터페이스의 차이점은? 인터페이스는 iv(인스턴스변수)를 가질 수 없다.