JAVA 9

[JAVA] 객체 지향 프로그래밍의 정의와 특징

📌 객체 지향 프로그래밍(OOP) 탄생 배경과 기본 개념1️⃣ 객체 지향 프로그래밍은 왜 생겼을까?과거 대부분의 프로그래밍은 절차지향 프로그래밍(Procedural Programming) 방식이었다.절차 지향 프로그래밍은 어떤 일을 처리하는 순서를 중심으로 코드를 작성하는 방식이다. 하지만 소프트웨어가 커지면서 변경도 잦고 복잡도도 높아지게 되었다.절차지향(Procedural) 방식은 순서 중심이라 작은 요구 변경도 여러 곳의 연쇄 수정을 부르고,데이터와 이를 다루는 로직이 분리되어 있어 일관성 유지가 어렵다. ✅ 절차지향의 특징순차적 처리에 강하다.데이터(상태)와 함수(메서드)가 서로 분리되어 있다.❌ 절차지향의 한계순서 의존성이 크기 때문에 중간 단계에서 추가나 수정 시 연쇄적으로 수정해야 하는 경..

JAVA 2025.08.13

[Java] equals 재정의 할 때 HashCode도 재정의 해야 하는 이유

✅ == 연산자비교 대상 → 참조값(주소) 또는 기본 타입 값 자체즉, 두 객체가 같은 메모리 주소를 가리키고 있냐를 비교String a = new String("hello");String b = new String("hello");System.out.println(a == b); // false → 주소가 다름 → 두 문자열은 내용이 같아도, new 연산자를 쓰면 서로 다른 객체가 된다. 즉 주소가 다르다. ✅ equals() 메서드비교 대상 → 객체의 내용즉, 두 객체가 논리적으로 같은 값/의미를 가지고 있냐를 비교String의 equals 메서드는 내용 비교를 수행한다.String a = new String("hello");String b = new String("hello");System.out..

JAVA 2025.07.16

[JAVA] 예외(Exception) 정리

프로그래밍을 하다보면 오류는 피할 수 없는 존재이다. 오류가 발생하는 이유로는 내부적인 요인과 외부적인 요인이 있다. 오타, 코드 실수, 존재하지 않는 파일, 입력 실수, 메모리 공간 부족, 하드웨어 문제 등등 수 많은 경우가 존재한다. 이러한 오류는 발생 시점과 심각성을 기준으로 크게 분류할 수 있다. 🔍 오류의 분류 기준1️⃣ 발생 시점에 따른 분류분류설명예시컴파일 에러 (Compile-Time Error)코드 작성 후 컴파일 단계에서 발생문법 오류, 잘못된 타입런타임 에러 (Run-Time Error)실행 도중 발생하는 오류정수를 0으로 나누기, 배열 인덱스 초과 2️⃣ 심각성에 따른 분류분류설명복구가능성에러 (Error)시스템 차원의 치명적인 문제 (개발자가 복구 불가)❌예외 (Exception..

JAVA 2025.06.01

[JAVA] ORM 이란?

📌 ORM(Object-Relational Mapping) 이란?객체 지향 프로그래밍에서 객체(Object)와 관계형 데이터베이스(Relational DB)를 연결 해주는 기술이다. ✅ 객체 vs 테이블📌 OOP에서는?JAVA에서 Person이라는 객체를 만들려면 아래 방식처럼 쓴다.Person p = new Person("tudamoa", 180, 70);p.setPhone("010-1234-5678");→ 코드로 다루는 단위는 클래스 + 객체이다. 📌 DB에서는?DB는 데이터를 테이블에 아래처럼 넣는다.| id | name | height | weight | phone ||----|---------|--------|--------|--------------|| 1 | tud..

JAVA 2025.05.31

[JAVA] JDBC 정리

📌 JDBC(Java Database Connectivity)란?JDBC는 Java에서 데이터베이스에 연결하고, SQL을 실행하고 조작할 수 있도록 해주는 표준 API다.MySQL, Oracle, PostgreSQL 등 다양한 DB와 연동 가능한 통신 인터페이스를 제공한다.✅ 주요 기능데이터베이스 연결SQL문 실행실행 결과 처리 🧩 JDBC의 주요 구성 요소 구성 요소설명DriverManagerJDBC 드라이버를 관리하고, DB와 연결(Connection)을 생성ConnectionDB와의 연결을 나타냄Statement / PreparedStatementSQL문을 실행하기 위한 객체ResultSetSELECT 결과를 담는 객체 (읽기 전용) 🔁 JDBC 처리 순서 JDBC 드라이버 로드각 DB..

JAVA 2025.05.27

[JAVA] 스레드(Thread) 정리

먼저 스레드(Thread)에 대해 알기 전 프로세스(Process)에 대해 알아둘 필요가 있다. 1. 프로세스(Process) 란? 컴퓨터의 보조 기억 장치(HDD, SSD)에는 다양한 프로그램이 저장되어 있다. 우리가 이 프로그램을 실행하면, 운영체제(OS)가 이를 메모리(RAM)에 로드하고 실행을 관리한다. 이때, 메모리에 적재되어 실행 중인 프로그램을 프로세스(Process)라고 한다. 자바 애플리케이션이 실행되면 JVM(Java Virtual Machine)이 하나의 프로세스를 생성하여 프로그램을 실행한다. 하지만 프로세스가 단 하나의 작업만 수행한다면 애플리케이션의 효율성이 떨어질 것이다. 예를 들어, 웹 서버처럼 여러 요청을 동시에 처리해야 하는 프로그램에서는 하나의 프로세스가 여러 작업을 ..

JAVA 2025.03.01

[JAVA] 컬렉션(Collection) 정리 / Map

1. MapMap은 키(key)와 값(value)을 매핑(Mapping) 하는 것을 구현한 인터페이스이다.각 키(key)는 정확히 하나의 값(value)과 연결되고 키는 중복될 수 없다.또한, 키(key)를 사용하여 Map에서 대응하는 값(value)을 가져올 수 있다.이미 존재하는 키(key)에 새로운 값(value)를 넣는다면 기존의 값이 대체된다. [특징]1. 중복을 허용하지 않는다.2. 순서를 보장하지 않는다.3. 정렬을 지원하지 않는다.4. 동기화가 불가능하다.5. List와 비교했을 때 삽입, 삭제, 조회 연산이 매우 빠르다. 클래스특징HashMap- 삽입, 삭제, 조회의 평균 시간 복잡도가 O(1)- 순서 보장 X- 정렬 X- 내부구조: HashTableLinkedHashMap- HashMa..

JAVA 2025.02.27

[JAVA] 컬렉션(Collection) 정리 / List, Set, Queue

1. 컬렉션(Collection) 이란?컬렉션(Collection)은 자바에서 우리가 자주 사용하는 자료 구조를 사용하기 쉽게 클래스로 구현해놓은 것이다. 이 컬렉션을 구조화해서 우리에게 인터페이스로 제공해주는 것이 JCF(Java Collection Framework)이다. 컬렉션을 사용하면, 이미 최적화가 잘 되어있는 코드를 사용하기 때문에 객체 지향적이고 재사용성이 높은 코드로 프로그래밍할 수 있기 때문에 편리하다. 그리고 일일이 자료구조를 구현할 필요가 없기 때문에 시간도 절약된다. 2. 컬렉션 프레임워크 구조 컬렉션 프레임워크는 Collection 인터페이스를 확장받고 있는 List, Set, Queue가 있고, 일반 Collection을 확장 받지는 않지만 같이 묶어서 말하는 Map 인터페이..

JAVA 2025.02.24

[JAVA] 래퍼 클래스(Wrapper Class) 정리

래퍼 클래스(Wrapper Class) 란?한마디로, 기본 타입을 객체로 다룰 수 있게 해주는 클래스이다. 차근차근 설명하자면, 래퍼 클래스는 '포장지' 라는 뜻의 'Wrapper' 라는 단어의 의미에서 알 수 있듯 선물처럼 무언가를 포장하는 클래스이다. 선물은 내가 고른 물건을 이쁘게 주기 위해 포장하는데,래퍼클래스는 정확히 무엇을, 왜, 어떻게 포장할까? 무엇을 포장할까?자바는 기본 타입(Primitive type)과 참조 타입(Reference type)으로 나누어진다.이 중 래퍼 클래스는 기본 타입(Primitive type)을 포장하여 객체를 만든다. 기본 타입을 왜 포장하는지 알기 전, 기본 타입과 참조 타입에 대한 이해가 필요하다. 1. 기본 타입(Primitive type) 타입기본값 ..

JAVA 2025.02.16