목록자바 (9)
변수의 기록
자바에서 업캐스팅과 다운캐스팅, equals와 hashCode, toString의 역할 및 오버라이딩 이유1. 업캐스팅과 다운캐스팅의 원리와 목적✅ 업캐스팅 (Upcasting)자식 객체를 부모 타입으로 참조하는 것예: Parent p = new Child();자동 형변환이 일어나며, 부모가 가진 멤버만 접근 가능런타임 시에는 실제 객체가 Child이더라도, 컴파일러는 Parent 기준으로 접근 허용다형성의 핵심: 다양한 자식 객체를 하나의 부모 타입으로 묶어 공통된 방식으로 처리 가능✅ 다운캐스팅 (Downcasting)부모 타입으로 참조된 객체를 다시 자식 타입으로 변환예: Child c = (Child) p;명시적 형변환이 필요하며, 실제 객체가 해당 자식 타입일 때만 안전하게 가능그렇지 않으면 C..
1. 상속 시 생성자 규칙기본 규칙자식 클래스의 생성자에서는 무조건 부모 생성자를 먼저 호출해야 한다.명시하지 않으면 컴파일러가 자동으로 super();를 추가함그런데 부모 클래스에 기본 생성자가 없으면, 자동 super(); 호출이 불가능하므로 컴파일 에러 발생예시 1: 부모에 기본 생성자 없을 때class Parent { public Parent(String name) {} // 기본 생성자 없음}class Child extends Parent { // 컴파일 에러! super() 자동 삽입 → 오류 public Child() {}}해결법:부모에 기본 생성자 추가자식에서 명시적으로 super("값") 호출class Child extends Parent { public Child..
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 =..
Garbage Collection: Mark and Sweep**Garbage Collection(GC)**은 자바에서 자동으로 메모리를 관리하는 핵심 기능이다.사용되지 않는 객체를 자동으로 탐지하고 제거하여 메모리 누수를 방지하고,개발자가 명시적으로 free()나 delete를 호출할 필요 없이 안정적인 메모리 관리가 가능하다.왜 GC가 필요한가?자바에서 객체를 생성하면 JVM의 힙 메모리에 저장된다.하지만 어떤 객체가 더 이상 사용되지 않음에도 메모리에 남아 있다면,사용 불가능한 메모리가 점점 쌓여 시스템 전체의 성능을 떨어뜨릴 수 있다.GC는 이러한 "사용되지 않는 메모리"를 자동으로 정리해주는 시스템이다.GC의 기본 방식 1: Reference Counting (참조 카운팅)객체가 몇 개의 참조를..

Java에서는 데이터를 저장할 때 다양한 형태의 배열 구조를 사용할 수 있습니다.세 가지 대표적인 구조인 기본 배열(Array), 동적 배열(Dynamic Array), 연관 배열(Associative Array)의 개념과 내부 동작 원리를 설명하겠습니다.1. 배열 (Array)배열은 같은 타입의 데이터를 일정한 순서로 나열하여 저장하는 자료구조입니다. Java에서 배열은 다음과 같은 특성을 가집니다:📌 특징동일한 데이터 타입만 저장 가능→ 예: int[], String[] 등고정 크기→ 생성 시 크기를 지정하면 이후 변경 불가연속된 메모리 공간에 저장→ 메모리의 주소가 연속적으로 할당되어 있음인덱스를 통한 접근→ 0부터 시작하는 정수 인덱스를 사용하여 요소 접근 int[] nums = new int[..

유저 모드와 커널 모드, 그리고 인터럽트와 시스템 콜1. 유저 모드 vs 커널 모드모던 운영체제는 CPU의 실행 권한을 **유저 모드(User Mode)**와 **커널 모드(Kernel Mode)**로 나눔.이유는 운영체제와 시스템 자원을 보호하기 위함임.유저 모드애플리케이션(사용자 프로그램)이 실행되는 환경CPU는 제한된 명령어만 사용 가능직접 하드웨어 접근 불가 (예: 디스크, 메모리 제어, 네트워크 등)문제가 발생하더라도 시스템 전체에는 영향을 미치지 않음커널 모드운영체제의 핵심인 커널이 실행되는 환경CPU는 모든 명령어 실행 가능 (하드웨어 제어 포함)시스템 자원 관리 (메모리, CPU 스케줄링, 파일 시스템 등)모든 프로세스의 보호와 보안을 책임짐2. 모드 전환 (유저 모드 → 커널 모드)유저 ..