Java(41)
-
연산자(Operators)
기본 이해정의: 프로그래밍에서 데이터를 처리하기 위한 기호나 단어비유: 수학의 계산 기호(+, -, ×, ÷)와 유사작동방식: 피연산자들에 대해 특정 연산을 수행하여 결과값 반환핵심 구성요소부호/증감 연산자+ (양수)- (음수)++ (1 더하기)-- (1 빼기)산술 연산자:+ (덧셈)- (뺄셈)* (곱셈)/ (나눗셈)% (나머지)** (거듭제곱)비교 연산자== (같다)!= (다르다)> (크다)>= (크거나 같다)논리 연산자&& (AND)|| (OR)! (NOT)존재 이유와 목적데이터 조작의 기본 도구조건문과 반복문의 핵심 요소수학적/논리적 연산 수행주의사항과 일반적 오류== 와 = 의 혼동= 는 할당 연산자 : 변수 등에 값을 할당하는데 사용== 는 비교 연산자 : 두 값이 같은지 비교논리 연산자 우선순..
2025.05.18 -
명시적 형변환 vs 암시적 형변환기본 이해명시적 형변환(Explicit Type Casting):프로그래머가 직접 데이터 타입을 변환하도록 지정코드에서 변환 의도가 명확히 보임(int), Integer.valueOf() 암시적 형변환(Implicit Type Casting):컴파일러가 자동으로 수행하는 타입 변환데이터 손실이 없는 안전한 변환만 수행작은 타입에서 큰 타입으로의 변환일상생활 비유명시적: 물을 얼음틀에 부어 얼음으로 만드는 것 (의도적 변환)암시적: 얼음이 상온에서 자연스럽게 물이 되는 것 (자연스러운 변환)명시적 형변환(Explicit Type Casting)명시적 이라는 말에서부터 알 수 있지만 직접 코드를 만들어서 형변환을 하는 방식을 뜻한다.핵심 구성요소캐스팅 연산자 () 사용가장 기본적이고 간단한 형변환 방식이다...
2025.05.18 -
지역변수와 멤버변수
기본 이해멤버변수클래스 내부에서 선언된 변수지역변수메서드 내부에서 선언된 변수로, 해당 메서드 내에서만 사용class House { furniture = "침대"; // 멤버변수: 집에 계속 있는 가구 clean() { let vacuum = "청소기"; // 지역변수: 청소할 때만 꺼내 쓰는 도구 console.log(`${vacuum}로 ${this.furniture} 청소`); } // 메서드가 끝나면 vacuum은 사라짐, furniture는 계속 존재}핵심 구성요소멤버변수접근제어자 사용 가능 (public, private 등)클래스 전체에서 접근 가능객체의 상태를 저장지역변수접근제어자 사용 불가 - 메서드 내부에서만 사용 가능하기때문선언된 블록 ..
2025.05.17 -
2. 메모리 - 3. 가비지 컬렉션 기본
자바의 가비지 컬렉션(Garbage Collection)기본 이해개념: 자바의 자동 메모리 관리 시스템으로, 더 이상 사용되지 않는 객체를 자동으로 감지하고 제거하는 프로세스비유: 집안 정리와 비슷함. 더 이상 필요 없는 물건(미참조 객체)을 정기적으로 치우는 청소부작동방식:Mark: 사용중인 객체 식별Sweep: 미사용 객체 제거Compact: 남은 메모리 조각 정리핵심 구성요소Young GenerationEden SpaceSurvivor Space (S0, S1)Old GenerationMetaspace (Java 8 이후)GC 알고리즘Serial GCParallel GCCMS GCG1 GC존재 이유와 목적메모리 누수 방지개발자의 메모리 관리 부담 감소안정적인 장기 실행 보장자동화된 메모리 최적화주의..
2025.05.14 -
2. 메모리 - 2. 메서드 영역(Method Area)
메서드 영역(Method Area)기본 이해개념 정의JVM의 메모리 구조 중 하나로, 클래스 구조, 메서드, 정적 변수 등을 저장하는 영역모든 스레드가 공유하는 영역일상생활 비유도서관의 책장처럼 모든 사람이 공유하며 참고할 수 있는 공간작동 방식클래스 로더가 클래스를 로딩할 때 생성JVM 시작 시 생성되어 종료 시까지 유지정적 데이터를 포함한 클래스 정보 저장핵심 구성요소Type Information클래스와 인터페이스의 정보메서드와 필드 정보타입 관련 상수풀Runtime Constant Pool클래스와 인터페이스의 상수메서드와 필드에 대한 레퍼런스Field Datastatic 변수상수 변수(final)Method Data메서드 바이트코드메서드 시그니처존재 이유와 목적클래스 정보의 중앙 집중화메모리 효율성..
2025.05.12 -
2. 메모리 - 1. 스택(Stack)과 힙(Heap)
기본 이해개념 정의스택: LIFO(Last In First Out) 구조의 메모리 영역으로, 정적 메모리 할당에 사용힙: 동적 메모리 할당을 위한 자유로운 영역으로, 크기가 불규칙한 데이터 저장일상생활 비유스택: 접시 쌓기 (마지막에 쌓은 접시를 먼저 사용)힙: 도서관 책장 (필요한 공간에 자유롭게 책을 배치)작동 방식스택: 함수 호출과 지역변수 저장, 컴파일 시점에 크기 결정힙: 런타임에 동적으로 메모리 할당/해제핵심 구성요소스택:프레임: 함수 호출마다 생성되는 독립적 영역포인터: 현재 실행 위치 추적지역변수 저장소힙:가용 메모리 풀메모리 블록메모리 관리자존재 이유와 목적메모리 효율적 관리빠른 액세스 속도 (스택)유연한 메모리 할당 (힙)스코프와 생명주기 관리주의사항과 일반적 오류스택 오버플로우메모리 ..
2025.05.12 -
1. 자바 플랫폼 - 3. 바이트코드의 개념
바이트코드(Bytecode) 기본 이해정의: 가상머신이 이해할 수 있는 중간 레벨의 명령어 집합비유: 여러 나라 사람들이 이해할 수 있는 국제 공용어와 같음작동방식: 소스코드 → 컴파일러 → 바이트코드 → 가상머신 → 기계어핵심 구성요소명령어 세트: 가상머신이 실행할 수 있는 기본 연산들상수 풀: 문자열, 숫자 등의 상수값 저장소메타데이터: 클래스, 메서드, 필드 정보스택 맵 프레임: 실행 시점의 스택 상태 정보존재 이유와 목적플랫폼 독립성 확보실행 효율성 향상보안성 강화 (소스코드 보호)동적 최적화 가능주의사항과 일반적 오류바이트코드 조작 시 검증 오류버전 호환성 문제성능 최적화 미고려메모리 관리 실수비교 분석특성바이트코드네이티브 코드실행속도중간빠름이식성높음낮음크기작음큼디버깅용이어려움플랫폼 의존성낮음높..
2025.05.12 -
1. 자바 플랫폼 - 2. 자바의 컴파일과 실행 과정기본 이해정의: 자바 소스코드(.java)를 JVM이 실행할 수 있는 바이트코드(.class)로 변환하고 실행하는 과정비유: 외국어 번역과 실행소스코드 = 원어컴파일 = 번역바이트코드 = 중간언어JVM = 각 나라의 통역사작동방식:소스코드 작성 (.java)컴파일러가 바이트코드로 변환 (.class)JVM이 바이트코드를 실행핵심 구성요소자바 컴파일러(javac)소스코드를 바이트코드로 변환문법 검사 수행JVM(Java Virtual Machine)바이트코드를 실행플랫폼 독립성 제공클래스로더필요한 클래스를 메모리에 로드JIT 컴파일러자주 사용되는 코드를 기계어로 변환존재 이유와 목적플랫폼 독립성 확보타입 안정성 보장성능 최적화 가능메모리 관리 자동화주의사항과 일반적 오류컴파일 에러문법 오류타입 불일치런타임 ..
2025.05.12 -
1. 자바 플랫폼 - 1. JDK, JRE, JVM의 차이기본 이해JDK (Java Development Kit): 자바 개발에 필요한 전체 도구 패키지JRE (Java Runtime Environment): 자바 프로그램 실행 환경JVM (Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신비유:JDK: 요리사의 전체 주방 도구세트JRE: 음식을 데우고 먹을 수 있는 주방JVM: 실제 요리를 하는 조리기구핵심 구성요소JDK:컴파일러 (javac)디버거 (jdb)문서 생성기 (javadoc)JREJRE:JVM자바 클래스 라이브러리실행 도구JVM:클래스 로더실행 엔진가비지 컬렉터런타임 데이터 영역존재 이유와 목적JDK: 개발자가 자바 애플리케이션을 개발하기 위함JRE: 개발된 자바 프로그램을 실행하기 위함JVM: "Write Once, ..
2025.05.12 -
Java와 JavaScript의 배열 차이점
주요 차이점 표특성Java 배열JavaScript 배열타입동일 타입만 저장 가능다양한 타입 혼합 저장 가능크기고정 크기동적 크기메모리연속된 메모리 할당해시 테이블 기반선언 방식타입 명시 필수타입 명시 불필요다차원 배열정규적인 구조 필수불규칙한 구조 가능길이 변경불가능가능 (push, pop 등)코드 비교 예시// Javaint[] numbers = new int[3];numbers[0] = 1;numbers[1] = 2;numbers[2] = 3;// numbers[3] = 4; // 에러 발생// JavaScriptlet numbers = [];numbers[0] = 1;numbers[1] = "two"; // 다른 타입 가능numbers[2] = true; // 다른 타입 가능numbers[3]..
2025.05.10