추상 클래스 vs 인터페이스
추상클래스
- 추상메서드가 적어도 1개 이상인 클래스
- 메서드의 선언만 되어 있을 뿐 정의는 되어 있지 않은 것
- extends
인터페이스
- 전부가 추상메서드
- 오로지 메서드의 선언만이 존재
- 즉, 명세
- implements
인터페이스 왜 씀?
public interface Scheduler {
public void getNextCall();
public void sendCallToAgent();
}
1. 동료들과의 협업 시 어떤 기능을 하는 멤버 메서드를 만들어 달라는 명시
2. 클라이언트들도 전체 코드를 보기 보다는 인터페이스를 통해 프로그램의 전체적인 흐름을 파악
ex. 리모콘을 쓸 줄은 알아도 리모콘의 동작방법은 모르는 것 처럼…
추가 정리(StringBuffer, StringBuilder)
JAVA에서 문자열을 다루는 대표적인 클래스에는 String, StringBuffer, StringBuilder가 있다. 이 중 String은 불변의 속성을 갖는다.
즉 문자열 추가, 수정, 삭제 등의 연산이 빈번하게 발생하는 알고리즘에 String 클래스를 사용하면 힙 메모리에 많은 임시 가비지가 생성되어 힙메모리 부족으로 성능에 치명적인 영향
※ 가변성을 지닌 StringBuffer/StringBuilder
StringBuffer
- 동기화 키워드를 지원하여 멀티 쓰레드 환경에서 안전
StringBuilder
- 동기화를 지원하지 않기 때문에 단일 쓰레드에서의 성능은 StringBuffer보다 뛰어남
자주 사용하는 메서드
- append() : 문자열을 추가하기 위해 사용
- length(), capacity() : 문자열 길이나 전체 할당 된 capacity를 구할 때 사용(capacity는 내부의 문자열을 저장하기 위한 버퍼의 총 갯수, 자동 증가)
- insert(int index, String “문자열”) : 시작 인덱스를 지정하여 원하는 위치에 삽입
- reverse() : 문자열 뒤집기
- delete(), deleteCharAt() : 인덱스를 지정하여 문자열의 일부분을 삭제하거나 한 문자만 삭제 할 때 사용
- replace() : 문자열의 일부분을 다른 문자열로 치환
- toString() : 문자열로 반환
'그룹스터디' 카테고리의 다른 글
JPA Auditing (0) | 2022.12.30 |
---|---|
일급 컬렉션(First Class Collection) (0) | 2022.12.23 |
XML Configuration vs Java Configuration (0) | 2022.12.14 |
DAO, DTO, VO, Entity (0) | 2022.12.07 |
디자인 패턴 - Singletone (0) | 2022.11.18 |