자바 25

(자바) 리플렉션의 개념 * 예제

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); 이처럼 클래스 이름이 문자열로 주어졌을 때도 객체 생성과 메서드 호출이 가능하다는 점이 리플렉션의 핵심이다.컴파일 타임이..

자바/자바 2025.06.23

(자바) 스프링 싱글톤 객체는 어떻게 생성되고 공유되는가?

스프링 싱글톤 객체는 어떻게 생성되고 공유되는가?1. 스프링에서 말하는 싱글톤이란?Spring에서 "싱글톤"이란, 클래스마다 단 하나의 인스턴스를 생성하고 이를 모든 의존 주입과 요청에 재사용하는 스코프를 의미한다. 이는 GoF의 Singleton 패턴과는 구현 방식이 다르며, Spring 컨테이너 수준에서 관리되는 일종의 싱글 인스턴스다.모든 @Component, @Service, @Repository, @Controller는 기본적으로 싱글톤으로 생성된다.이는 @Scope("singleton")와 동일한 의미이며, 명시하지 않아도 적용된다.싱글톤 스코프는 성능 측면에서 효율적이며, DI 컨테이너가 객체 생명주기를 직접 제어할 수 있게 해준다.2. GoF의 싱글톤 패턴과의 차이 (+ 예제)구분 Spri..

자바/자바 2025.06.20

(자바)자바의 신 day3 - 오늘의 학습 정리 (패키지, static, 참조/기본형 등)

자바의 신 - 오늘의 학습 정리 (패키지, static, 참조/기본형 등)오늘 공부한 내용을 중심으로, 개발자 관점에서 꼭 알아야 할 실전 감각과 개념을 함께 정리합니다.1️⃣ Java 패키지란?🔹 패키지(Package) 기본 개념클래스를 논리적으로 묶는 단위자바 파일 최상단에 package com.example.util;처럼 선언다른 패키지의 클래스를 사용할 땐 import 필요같은 패키지 내부 클래스는 import 없이 접근 가능🔹 왜 패키지가 중요한가? (실무 관점)이유설명역할 분리controller, service, repository 등으로 기능별 구조화유지보수기능/영역별 분리로 수정 시 영향 범위 최소화접근 제어default/protected는 같은 패키지 내에서만 접근 가능빌드/모듈화Gr..

자바/자바 2025.06.20

Java 신 개념 총정리 — char, this, switch, 생성자, 자료형 설계 이유까지 (day2)

Java 기초 핵심 개념 총정리 — char, this, switch, 생성자, 자료형 설계 이유까지 자바를 공부하며 한 번쯤 고민하게 되는 질문들, 오늘은 진짜 본질부터 하나씩 정리해보려 한다. 특히 《자바의 신》을 읽으며 느끼는 "왜?"를 해결해주는 깊이 있는 내용 위주로 구성했다.✅ 1. char는 문자 하나만 저장 가능한가?✔️ 결론부터 말하면:char는 문자 하나만 저장할 수 있으며, 내부적으로 유니코드 정수값(2바이트) 으로 처리된다.🔹 예시:char c = '가'; // 유효, '가'는 하나의 문자System.out.println((int)c); // 44032 출력 (유니코드 값)🔹 잘못된 예시:char c = '가나다'; // ❌ 오류 - 2글자 이상은 char에..

자바/자바 2025.06.19

Java의 신 Day 1 정리

Java의 신 Day 1 정리"자바의 신"은 겉보기엔 초급자를 위한 입문서처럼 보이지만, 입문을 넘어서 기초를 다지는 데 매우 좋은 책이라는 얘기를 자주 들어왔습니다. 개인적으로는 과거에 가볍게 넘겼던 내용이나 애매하게 알고 있던 기초 개념들을 제대로 다시 잡고 싶어서 이 책을 읽어보기로 결심했습니다.특히, 이미 알고 있다고 생각했지만 사실은 불분명하게 알고 있었던 부분들 다시 돌아보는 데 이 책이 굉장히 도움이 될거 같습니다. 저처럼 "자바를 사용하고 있지만 개념이 명확하지 않다"거나, "기초를 다시 다지고 싶은 분들"에게도 이 정리글이 도움이 되길 바랍니다.✅ 1. 자바 GUI 프로그래밍이란?GUI (Graphical User Interface): 그래픽 기반의 사용자 인터페이스 (버튼, 텍스트박스 ..

자바/자바 2025.06.18

java(자바)- 제네릭(Generic)의 구조적 이해 – 타입, 힙/스택, 참조형까지 완전 정리

자바 제네릭(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 =..

자바/자바 2025.06.15

(JAVA) 불변 객체

불변 객체란 뭘까?프로그래밍 하다 보면 "이 객체 상태가 바뀌면 안 되는데..." 싶은 순간이 있죠.그럴 때 딱 맞는 개념이 바로 불변 객체(Immutable Object)입니다.불변 객체는 한 번 만들면 내부 상태가 절대 바뀌지 않는 객체를 말해요.객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사(defensive-copy)를 통해 제공한다.쉽게 말해, 생성 이후에는 그냥 읽기 전용! (read-only) 왜 불변 객체가 좋을까?.1. 코드가 깔끔하고 안전함상태가 안 바뀌니까 예상 못 한 사이드 이펙트도 없고, 디버깅도 쉬워져요.특히 협업할 때 다른 사람이 뭘 건드릴까 걱정 안 해도 되는 게 제일 큼.2. 자료구조와 찰떡궁합Map, Set, Cache 같은 데서 많이 쓰이는데,값이 안 ..

자바/자바 2025.04.25

(java) 값이 중복되는 객체를 제거 hash set , HashMap 사용

사용자 정의 객체와 HashSet, HashMap에서의 중복 처리자바에서 HashSet이나 HashMap 같은 해시 기반 컬렉션은 객체의 중복 여부를 판단하기 위해 내부적으로 hashCode()와 equals() 메서드를 사용한다. 이 글에서는 개발자가 직접 정의한 클래스를 해시 테이블에 넣을 때, 중복을 어떻게 처리하고, 주의할 점은 무엇인지 정리한다.1. 중복 판단 기준HashSet이나 HashMap은 객체를 저장하거나 검색할 때 다음 절차를 따른다:hashCode()로 해시값을 계산 → 어느 버킷(인덱스)에 저장할지 결정해당 버킷 안에서 equals()로 같은 객체인지 판단즉, 같은 해시값을 가지면서 equals()도 true여야 동일한 객체로 간주되어 중복 저장이 되지 않는다.2. 개발자가 해야 ..

자바/자바 2025.04.24

(Java) Set의 구조와 활용 - ADT 관점으로 이해

1. Set이란 무엇인가? (ADT 관점)Set은 데이터를 저장하는 추상 자료형(ADT) 중 하나입니다.특징적으로 다음과 같은 성질을 가집니다:중복을 허용하지 않는다요소의 순서를 보장하지 않는다데이터의 존재 유무를 빠르게 확인할 수 있다이러한 동작을 제공하는 구조만 정의된 것이 Set이라는 ADT이고,Java에서는 Set 인터페이스와 이를 구현하는 다양한 클래스(HashSet, LinkedHashSet, TreeSet)를 통해 이 ADT를 실현합니다.2. Set의 사용 목적 및 언제 사용하는가✅ Set이 유리한 상황중복 제거가 필요한 경우→ 예: 사용자 입력값 정제, 태그 중복 제거 등순서가 중요하지 않은 데이터 집합→ 예: 허용된 IP 주소 목록, 이미 방문한 노드 기록 등특정 데이터가 존재하는지 여부..

자바/자바 2025.04.23

(Java) Map 구조 정리 - ADT 관점에서의 이해 (****별 다섯개****)

1. Map의 개념핵심 특징Key - Value 쌍으로 구성Key는 중복 불가, Value는 중복 가능Key를 기준으로 빠르게 검색 및 저장 가능Java에서는 Map 인터페이스를 통해 이 ADT를 정의하고, 여러 구현체를 제공합니다.2. Map의 주요 구현체구현체특징HashMap내부적으로 Hash Table 구조 사용. 평균 O(1) 접근TreeMap내부적으로 Red-Black Tree 기반. O(log n) 접근LinkedHashMap해시 구조 + 삽입 순서 유지이 글에서는 가장 널리 사용되는 HashMap을 기준으로 설명합니다.3. Hash Table 기반 Map 구조HashMap은 내부적으로 다음 구조를 가집니다:📌 구성 요소배열: 일정 크기의 버킷 공간 (예: 8, 16 등)Hash 함수: Ke..

자바/자바 2025.04.23