this.의 의미 public class Customer { int money; void putmoneyin(int money) { this.money = money; }}이 코드에서 this.의 의미는 지금 실행중인 Customer객체의 money 필드에 매개변수 money값을 대입하라 는 뜻이다.this는 객체를 만드는 행위가 아니다.객체를 만들어야 this를 쓸수있기 때문에, 객체를 만드는것으로 오해한다. JAVA 2025.11.03
JAVA에서 todo주석 쓰는법 todo를 치면 어시스턴트가나온다. 그리고 그 날짜 오른쪽에 해야할일을 적으면된다. 예를들어 **작업이 끝나고나면 이어서 작업 - Jay 인텔리제이 툴에서 todo만 모아서 또 볼수있다. todo리스트처럼 같은예로 fixme가 있다 이것도 인텔리제이에서 모아서 볼수있음 JAVA 2025.10.18
오버라이드(override) 인터페이스의 unit()을 안 바꾼 경우먼저 인터페이스 그대로 사용할 때 public interface MeterInterface { double measure(); String result(); default String unit() { return "ms"; // 기본값은 밀리초 }}그리고 이걸 구현한 클래스:public class StopWatch implements MeterInterface { @Override public double measure() { return 12.3; } @Override public String result() { return measure() + " " + unit(); }.. JAVA 2025.10.12
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
인스턴스 변수를 private으로 해야하는 이유가 뭘까 /** Class that represents a rectangle. */public class Rectangle{ private int width; private int height; private int area; public void setDimensions(int newWidth, int newHeight) { width = newWidth; height = newHeight; area = width * height; } public int getArea() { return area; }}Rectangle box = new Rectangle(); // 사각형 객체 생성 box.setD.. JAVA 2025.08.25
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