[JAVA] String vs StringBuffer & equals() vs hashCode()
·
Java
📌 String참조형 타입, Heap 메모리에 저장불변 객체 (Immutable)→ 문자열 변경 시 기존 객체 수정이 아닌 새 객체 생성문자열 비교 방식== : 주소값 비교equals() : 문자열 값 비교✔ 불변으로 설계된 이유String Constant Pool 활용으로 캐싱 → 성능 향상멀티스레드 환경에서 동기화 문제 없음보안 강화 → 예: DB 비밀번호 같은 민감 데이터 보호📌 String vs StringBuffer vs StringBuilder StringStringBufferStringBuilder가변성❌ 불변✅ 가변✅ 가변쓰레드 안전✅ thread-safe✅ thread-safe❌ unsafe성능느림보통가장 빠름사용처변경 거의 없음멀티스레드 변경 多단일 스레드 변경 多 ✔ 핵심 요약S..
[JAVA] interface vs abstract class
·
Java
📌 추상 클래스 (abstract class)public abstract class Shape { public abstract void draw(); }인스턴스 생성 불가, 반드시 자식 클래스에서 상속 받아야 함공통 로직은 직접 구현, 자식 클래스에서 달라지는 부분은 추상 메서드로 강제객체 생성 시, 부모 생성자 먼저 실행중복된 필드나 공통 메서드를 통합해 상속할 수 있음구현 강제성과 재사용성을 동시에 제공abstract class Animal { public abstract void makeSound(); // 강제 구현 public void eat() { System.out.println("냠냠"); // 공통 구현 }} class Dog extends Animal { ..
[JAVA] 변수와 제어자
·
Java
📌 변수의 기본형 & 참조형✅ 기본형 (Primitive Type)논리형, 문자형, 정수형, 실수형 총 8가지:boolean, char, byte, short, int, long, float, double값 자체가 스택(Stack) 영역에 저장됨✅ 참조형 (Reference Type)실제 값은 힙(Heap) 영역에 저장되고, 참조값(주소)은 스택에 저장종류클래스 타입: String, Integer, ArrayList, HashMap 등배열 타입: int[], String[], User[]인터페이스 타입: List, Map, Runnable열거형 타입: enum📌 형변환✅ 자동(묵시적) 형변환낮은 자료형 → 높은 자료형 (데이터 손실 없음)예: int → long, float ← longfloat가 4..
[JAVA] Generics Type
·
Java
📌 제네릭이란?클래스나 메서드에서 사용할 데이터 타입을 외부에서 지정타입을 유연하게 다루며, 컴파일 타임 타입 안정성 확보예: List은 오직 문자열만 저장 가능📌 문법 및 기호기본 문법: → 타입 매개변수흔한 기호:: 타입 (Type): 요소 (Element): Map의 키/값: 숫자 (Number): 추가 타입📌 제네릭 클래스class Box { private T item; public void set(T item) { this.item = item; } public T get() { return item; }}Box strBox = new Box();​ 📌 제네릭 메서드메서드 자체에 선언 → 독립적인 제네릭 사용 가능public static..