본문 바로가기

☕Java/Java 기본24

String, StringBuffer, StringBuilder 비교 mutable immutable 동기화 지원, thread-safe StringBuffer String 동기화 지원 안 함 StringBuilder String, StringBuffer, StringBuilder는 모두 문자열을 다루는 클래스이다. 하지만 각각 다른 특성을 갖고 있다. 먼저, String은 불변(immutable) 속성을 가진다. '불변'이란 메모리의 한 공간에 처음 값이 할당되고 나면 변하지 않음을 뜻한다. 그렇다고 한 번 할당한 변수에 다시 할당한다고 예외나 오류가 발생하지 않는다. 이때는 새로운 값을 가진 객체를 새로 생성하고 그 객체를 가리키게 된다. 처음에 생성된 객체는 힙 영역에 남아 있다가 가비지 컬렉션의 대상이 된다. 값을 할당할 때마다 새로운 객체가 생성되므로, Strin.. 2022. 7. 24.
SOLID 원칙 객체 지향 언어로 프로그래밍을 하는 사람이라면 SOLID 원칙을 들어본 적이 있을 것이다. SRP, OCP, LSP, ISP, DIP 다섯 가지 원칙의 앞글자를 따서 부르는 것인데, 설명들은 많이 있지만 실제 프로그래밍을 사용할 때 기억하고 그 원칙을 지키려면 잘 기억하고 있어야 할 것 같아서 짧게 정리해보려고 한다. 각 원칙을 한 문장 내외로 축약할 것이다. SRP(Single Resposibilitiy Principle, 단일 책임 원칙): 하나의 클래스와 그것을 구성하는 각각의 메서드들은 각각 하나의 책임을 가져야 한다. OCP(Open-Close principle, 열림 닫힘 원칙): 확장은 가능하지만 수정은 지양한다.(확장에 열려 있고 수정에 닫혀 있다. LSP(Liskov Substitutio.. 2022. 6. 26.
JCF(Java Collection Framework) 정리 List ArrayList - 배열을 개선한 것. 배열과 다르게 가변 크기. Random Access로 검색에 유리. 검색 시 O(1), 삽입, 삭제 시 배열 크기를 늘리고 요소들을 이동시켜야 하므로 O(n). 최대 인덱스 초과 시 배열 크기 50% 증가. LinkedList - 각 자료들이 앞 자료와 뒷 자료의 주소를 갖고 있어 Sequential Access. 삽입이나 삭제에 유리. 검색 시 O(1)~O(n). 삽입, 삭제 시 O(1). Vector - 동기화 지원. 한 번에 하나의 스레드만 접근. -> Thread-safe. 최대 인덱스 초과 시 배열 크기 100% 증가. Map HashMap - 키 값을 해시 테이블로 만들어서 인덱스로 사용. 순서 보장 X. LinkedHashMap - HashM.. 2021. 12. 28.
자바 접근 제한자(Access Modifier) 총정리 Class의 접근 제한자는 public, (default)만 가능하다. 즉, 다른 패키지에서 생성이 가능하거나 같은 클래스 내에서만 생성 가능하다.(protected, private는 사용 불가능) 변수와 메서드의 접근 제한자는 public, protected, (default), private가 사용 가능하다. public는 다른 패키지에서도 객체 생성 가능. (default)는 같은 패키지 내에서 객체 생성 가능. private은 같은 클래스 내에서만 객체 생성 가능. protected는 같은 패키지 내에서, 그리고 다른 패키지라도 상속할 경우 객체 생성 가능. ※ protected 사용 시 주의 사항 package A; public class SuperClass { protected String f.. 2021. 12. 28.
728x90