본문 바로가기

Language & Tool/Java13

☕자바에서 "같다"라는 두 가지 의미 1. 동일성 vs 동등성1) 동일성 (Identity)개념: 두 객체/변수가 메모리상에서 완전히 같은 인스턴스(동일한 주소/참조값)를 가리키고 있는지 비교. 즉, 물리적으로 같은 객체인지를 판단한다.비교 방법: == 사용 (참조값 비교)특징:참조값이 같으면 두 객체는 실제 동일한 객체이므로 내부의 값(Value)도 당연히 같다.equals() 메서드를 구현할 때 성능 최적화를 위해 내부 최우선 조건문으로 if (this == anObject) 형태를 자주 사용한다.Person p1 = new Person("홍길동");Person p2 = p1; // p2는 p1과 동일한 메모리 주소를 참조함System.out.println(p1 == p2); // true (동일함)2) 동등성 (Equality)개념: .. 2026. 7. 13.
☕JVM 메모리 동작과 객체지향의 이해 🔗 JVM에 대한 보충 설명(2번 문단)🔗 C++의 OOP(메서드 구조) 1. C++ vs Java 객체지향 방식 비교C++과 Java는 객체를 메모리에 할당하고 참조하는 방식에서 큰 차이가 있음[C++ 방식]Cat myCat; --> 스택(Stack) 영역에 직접 객체 생성 (자바는 불가능)Cat* myCatPtr = new Cat(); --> new 연산자가 힙(Heap)의 시작 주소를 반환 (포인터 사용)[Java 방식]Cat myCat = new Cat(); --> 항상 JVM이 관리하는 힙(Heap) 영역에만 생성됨 (포인터 기호 -> 없음)1) 주요 차이점 점검포인터 (C/C++): '실제 메모리 주소' 그 자체. myCatPtr + 1처럼 주소값을.. 2026. 6. 14.
☕Java의 기본 개념과 컴파일 메커니즘 🔗 타입 검사 & 타입 소거 (제네릭) 1. 자바 코드와 개념 이해1) 개념 한 줄 요약클래스 (Class): 무엇인가를 만들기 위한 설계도 (실체가 없음)객체 (Object): 그 설계도를 보고 진짜로 만들어낸 실체 (메모리에 존재함)메서드 시그니처 (Method Signature): 메서드의 이름과 매개변수의 리스트(타입, 개수, 순서)의 조합. 자바는 리턴 타입이나 변수 이름은 구별하지 않고 오직 이 시그니처로만 메서드를 구분예: sum(int, int)값의 반환: 메서드가 호출되면 내부 로직을 수행한 후, return 키워드를 통해 자신이 종료되면서 호출자(Caller)에게 결과값을 제공.2) 메인 메서드 (static main)의 비밀필수 조건: JVM(자바 가상 머신)이 프로그램을 실행하고 .. 2026. 6. 14.
☕예외 처리(Exception Handling) 1. 예외와 에러의 차이 (Error vs Exception)자바에서는 실행 중 발생하는 오류를 크게 두 가지로 나눔. 모두 Throwable 클래스를 상속받는다.에러 (Error): 메모리 부족(OutOfMemoryError)이나 스택 오버플로우(StackOverflowError)처럼 JVM 수준에서 발생하는 심각한 오류로, 코드로 수습할 수 없는 경우가 대부분. (Unchecked)예외 (Exception): 개발자의 실수나 외적인 요인(파일 없음, 네트워크 단절 등)으로 발생하며, 코드를 통해 미리 예측하고 수습할 수 있는 오류. 예외 처리: 프로그램 실행 중 발생할 수 있는 예기치 못한 오류에 대비하여, 프로그램의 갑작스러운 비정상 종료를 막고 실행 상태를 정상적으로 유지하도록 하는 핵심 기술ℹ️.. 2026. 6. 11.
☕Java 제네릭(Generic) 이해하기 🔗 컴파일, 타입 소거 언급 1. 제네릭이 왜 필요할까? (도입 배경)JDK 1.5 (Java 5) 이전에는 다양한 타입을 처리하기 위해 각 타입별로 클래스를 따로 만들거나, 모든 클래스의 최상위 부모인 Object 타입을 사용했지만 하지만 여기에는 아래의 두 가지 큰 문제가 있음번거로운 형변환(Casting): 값을 꺼낼 때마다 원래 타입으로 강제 형변환을 해야 한다.타입 안정성 부족: 실수로 잘못된 타입의 객체를 넣어도 컴파일 시점에는 알 수 없고, 프로그램이 실행될 때(Runtime) 에러(ClassCastException)가 발생해 프로그램이 멈추는 위험이 있음.📊 제네릭이 해결한 코드 비교// 예시 1: 제네릭이 없는 경우 (Raw 타입 사용)ArrayList list = new ArrayL.. 2026. 6. 11.
☕Java 제어문 총정리 (+ 레이블) 🔗 메모🔗 구현체관련(Iterable) 1. 조건문 (Conditional Statements)주어진 조건식의 결과(true/false)에 따라 실행할 코드 블록을 결정함.① if / else if / else 문가장 대표적인 조건문으로, 조건식이 true일 때 실행된다 (참과 거짓에 따라 분기)조건의 개수에 따라 단일 if문, if-else문, 다중 조건문으로 나뉘고 사슬처럼 이어 붙여 사용한다.참이 되는 조건을 만나면 해당 코드를 실행한 뒤, 전체 if 문을 빠져나기 때문에 조건문을 짤 때는 조건의 범위가 더 좁고 엄격한 것(조건이 까다로운 것)부터 위쪽에 배치해야 함논리 연산자(&&, ||, !)를 사용해 복잡한 조건도 한줄로 표현 가능int score = 85;if (score >= 90) {.. 2026. 6. 8.