목록자바 (16)
변수의 기록
1. 상속 시 생성자 규칙기본 규칙자식 클래스의 생성자에서는 무조건 부모 생성자를 먼저 호출해야 한다.명시하지 않으면 컴파일러가 자동으로 super();를 추가함그런데 부모 클래스에 기본 생성자가 없으면, 자동 super(); 호출이 불가능하므로 컴파일 에러 발생예시 1: 부모에 기본 생성자 없을 때class Parent { public Parent(String name) {} // 기본 생성자 없음}class Child extends Parent { // 컴파일 에러! super() 자동 삽입 → 오류 public Child() {}}해결법:부모에 기본 생성자 추가자식에서 명시적으로 super("값") 호출class Child extends Parent { public Child..
1. 리플렉션의 개념리플렉션(Reflection)은 자바에서 런타임 중 클래스, 메서드, 필드 등의 정보를 조회하고 조작할 수 있는 기능이다.java.lang.reflect 패키지를 통해 제공되며,Class 객체를 통해 메서드를 호출하거나 필드에 접근하는 것이 가능하다.Class clazz = Class.forName("com.example.MyService");Object instance = clazz.getDeclaredConstructor().newInstance();Method method = clazz.getMethod("run");method.invoke(instance); 이처럼 클래스 이름이 문자열로 주어졌을 때도 객체 생성과 메서드 호출이 가능하다는 점이 리플렉션의 핵심이다.컴파일 타임이..
스프링 싱글톤 객체는 어떻게 생성되고 공유되는가?1. 스프링에서 말하는 싱글톤이란?Spring에서 "싱글톤"이란, 클래스마다 단 하나의 인스턴스를 생성하고 이를 모든 의존 주입과 요청에 재사용하는 스코프를 의미한다. 이는 GoF의 Singleton 패턴과는 구현 방식이 다르며, Spring 컨테이너 수준에서 관리되는 일종의 싱글 인스턴스다.모든 @Component, @Service, @Repository, @Controller는 기본적으로 싱글톤으로 생성된다.이는 @Scope("singleton")와 동일한 의미이며, 명시하지 않아도 적용된다.싱글톤 스코프는 성능 측면에서 효율적이며, DI 컨테이너가 객체 생명주기를 직접 제어할 수 있게 해준다.2. GoF의 싱글톤 패턴과의 차이 (+ 예제)구분 Spri..
자바의 신 - 오늘의 학습 정리 (패키지, static, 참조/기본형 등)오늘 공부한 내용을 중심으로, 개발자 관점에서 꼭 알아야 할 실전 감각과 개념을 함께 정리합니다.1️⃣ Java 패키지란?🔹 패키지(Package) 기본 개념클래스를 논리적으로 묶는 단위자바 파일 최상단에 package com.example.util;처럼 선언다른 패키지의 클래스를 사용할 땐 import 필요같은 패키지 내부 클래스는 import 없이 접근 가능🔹 왜 패키지가 중요한가? (실무 관점)이유설명역할 분리controller, service, repository 등으로 기능별 구조화유지보수기능/영역별 분리로 수정 시 영향 범위 최소화접근 제어default/protected는 같은 패키지 내에서만 접근 가능빌드/모듈화Gr..
Java 기초 핵심 개념 총정리 — char, this, switch, 생성자, 자료형 설계 이유까지 자바를 공부하며 한 번쯤 고민하게 되는 질문들, 오늘은 진짜 본질부터 하나씩 정리해보려 한다. 특히 《자바의 신》을 읽으며 느끼는 "왜?"를 해결해주는 깊이 있는 내용 위주로 구성했다.✅ 1. char는 문자 하나만 저장 가능한가?✔️ 결론부터 말하면:char는 문자 하나만 저장할 수 있으며, 내부적으로 유니코드 정수값(2바이트) 으로 처리된다.🔹 예시:char c = '가'; // 유효, '가'는 하나의 문자System.out.println((int)c); // 44032 출력 (유니코드 값)🔹 잘못된 예시:char c = '가나다'; // ❌ 오류 - 2글자 이상은 char에..
Java의 신 Day 1 정리"자바의 신"은 겉보기엔 초급자를 위한 입문서처럼 보이지만, 입문을 넘어서 기초를 다지는 데 매우 좋은 책이라는 얘기를 자주 들어왔습니다. 개인적으로는 과거에 가볍게 넘겼던 내용이나 애매하게 알고 있던 기초 개념들을 제대로 다시 잡고 싶어서 이 책을 읽어보기로 결심했습니다.특히, 이미 알고 있다고 생각했지만 사실은 불분명하게 알고 있었던 부분들 다시 돌아보는 데 이 책이 굉장히 도움이 될거 같습니다. 저처럼 "자바를 사용하고 있지만 개념이 명확하지 않다"거나, "기초를 다시 다지고 싶은 분들"에게도 이 정리글이 도움이 되길 바랍니다.✅ 1. 자바 GUI 프로그래밍이란?GUI (Graphical User Interface): 그래픽 기반의 사용자 인터페이스 (버튼, 텍스트박스 ..
자바 제네릭(Generic)의 구조적 이해 – 타입, 힙/스택, 참조형까지 완전 정리1. 제네릭이란?제네릭(Generic) 은 자바에서 컴파일 시점에 타입을 명시적으로 지정할 수 있게 하는 문법이다.타입 안정성을 높이고 형변환을 줄이기 위해 도입되었으며, 대표적으로 List, Map, Box 등의 형태로 사용된다.예시:List list = new ArrayList();list.add("abc");String value = list.get(0); // 형변환 없이 사용 가능2. 자바 제네릭의 핵심 특징 – 타입 소거(Type Erasure)자바의 제네릭은 타입 소거(Type Erasure) 방식으로 동작한다.즉, 제네릭 타입 정보는 컴파일 시에만 존재하고, 런타임에는 모두 제거된다.예:List list =..
불변 객체란 뭘까?프로그래밍 하다 보면 "이 객체 상태가 바뀌면 안 되는데..." 싶은 순간이 있죠.그럴 때 딱 맞는 개념이 바로 불변 객체(Immutable Object)입니다.불변 객체는 한 번 만들면 내부 상태가 절대 바뀌지 않는 객체를 말해요.객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사(defensive-copy)를 통해 제공한다.쉽게 말해, 생성 이후에는 그냥 읽기 전용! (read-only) 왜 불변 객체가 좋을까?.1. 코드가 깔끔하고 안전함상태가 안 바뀌니까 예상 못 한 사이드 이펙트도 없고, 디버깅도 쉬워져요.특히 협업할 때 다른 사람이 뭘 건드릴까 걱정 안 해도 되는 게 제일 큼.2. 자료구조와 찰떡궁합Map, Set, Cache 같은 데서 많이 쓰이는데,값이 안 ..