JAVA 22

get(Accessor) 과 set(Mutator)

다음 Rectangle클래스를 보고 문제점과 개선해야할 점을 알아보자.public class Rectangle { public int width, height; // ❌, 문제점!! public → 외부에서 직접 접근 가능 public void setDimensions(int newWidth, int newHeight) { width = newWidth; height = newHeight; } public int getArea() { return width * height; }} 문제점은 width와 height가 public으로 선언되어 있음 → 직접 접근 가능Rectangle box = new Rectangle();box.width = ..

JAVA 2025.10.09

재할당 vs 내부 상태 변경

final set 인데 numbers.add()가 왜 가능한가?→ 핵심은 “재할당” vs “내부 상태 변경”차이를 이해하는가? 자바에서 final은 “변수가 다른 객체를 가리키도록 재할당되는 걸 막는다”는 뜻이지, 그 객체 안의 내용을 바꾸는 걸 막는 게 아니다.예를 들어 final Set numbers = new HashSet(); numbers.add(1); numbers.add(2); 여기서 final이 적용된 건 numbers라는 변수다. numbers는 HashSet 객체를 가리키고 있는데,그 “참조”를 다른 객체로 바꾸는 게 불가능하다. 정리하면 final은 화살표로 가리키고있는 곳을 바꾸는게 불가능하다는것으로 나는 이해했다. numbers = new HashSet(); // ❌ 재할당..

JAVA 2025.10.08

자바의 generic 정리

자바의 generic은 클래스나 메소드를 작성할 때, 데이터 타입을 미리 지정하지 않고사용할때 타입을 지정할 수 있게 해주는 기능이다. generic을 사용하면 코드 재사용성이 높아지고컴파일시, 안정성을 확보할수 있다. 예로 자바의 List, Set등의 자료구조 클래스 generic을 활용하여 다양한 타입의 데이터를 다룰 수 있도록 설계되어 있다. 그렇다면 Set자료구조에서 generic은 구체적으로 어떻게 사용될까? Set은 중복되지않은 요소들의 집합을 나타내는 자료구조이다. 여기제 generic을 적용하면 Set에 저장되는 요소의 타입을 명확하게 지정할 수 있다. 즉 특정타입의 객체만 저장하도록 제한할 수 있다. object를 사용하면 string을 포함한 모든 타입을 저장할수 있는데 generi..

JAVA 2025.10.06

스택과 힙 다시 정리

MemoryMemberRepository repo = new MemoryMemberRepository();private Map store = new HashMap(); repo는 스택인데store는 힙이다 왜??기준: "변수가 어디 선언되었나?"다시 스택과 힙의 차이에 대해 알아보자스택(Stack) 메서드 실행 시 생겼다가 끝나면 사라지는 공간 (지역변수, 매개변수 저장) 힙(Heap) new로 만든 객체가 저장되는 공간 (필드, 인스턴스 데이터 저장) repo 예시public static void main(String[] args) { MemoryMemberRepository repo = new MemoryMemberRepository();}main 메서드 안에 선언된 지역 변수따라서 스택에..

JAVA 2025.09.12

Entity설계 시 ID 값을 Long으로 지정하는 이유

1. 일단 int가 아닌 이유long이 더 많은 값을 저장할 수 있다. 비교해보자 int 4바이트- 저장 공간: 32 bit- 값의 범위 : -2147483648 ~ 2147483647 long 8바이트 in java- 저장 공간: 64 bit- 값의 범위: -9223372036854775808 ~ 9223372036854775807 2. long 대신 Long 쓰는 이유long은 primitive type으로, 값이 없을 경우 0으로 초기화된다. 따라서, id가 없어서 0으로 세팅이 된 것인지, 아니면 실제 값이 0인지 데이터만 보고 판별할 수 없다. 반면 Long은 wrapper type으로, 값이 없을 경우 null로 초기화 된다. 따라서 값이 0이라면, id가 0으로 저장됐음을 알 수 았다..

JAVA 2025.09.10

Hashmap in java (2)

HashMap에 있는 메서드들은 외워야할까?(put, get, containsKey 등)은 "암기" 보다는 자연스럽게 익숙해지면 된다. 왜 외울 필요까지는 없을까?IDE(개발 도구)가 자동완성 해준다예: map.이라고 쓰면 .put(), .get(), .containsKey() 같은 목록이 자동으로 뜸.자주 쓰는 것만 익혀도 충분실무에서도 다들 검색하면서 씀. 완벽하게 외우고 쓰는 사람 거의 없음.패턴이 단순해서 쉽게 익숙해짐몇 번만 써보면 어떤 메서드를 언제 쓰는지 감이 옴하지만, 아래 3개는 자바 문제 풀다 보면 자연스럽게 자주 보게 될 예정이다 메서드 언제 쓰는지put(key, value)값을 저장하거나 업데이트할 때get(key)key로 value를 꺼낼 때containsKey(key)key가 ..

JAVA 2025.07.29