반응형

Java 4

Java BufferedReader와 StringTokenizer

알고리즘 문제를 풀거나 대용량 데이터를 처리할 때, 입력을 어떻게 받느냐가 성능에 큰 영향을 미칩니다. 오늘은 Java에서 빠른 입력 처리를 위한 필수 도구인 BufferedReader와 StringTokenizer에 대해 알아보겠습니다.왜 BufferedReader를 사용할까?Java에서 입력을 받는 방법은 여러 가지가 있습니다. 가장 간단한 Scanner부터 BufferedReader까지, 각각 장단점이 있습니다. 하지만 속도가 중요한 상황에서는 BufferedReader가 압도적으로 유리합니다.Scanner vs BufferedReader 성능 비교Scanner는 사용하기 편리하지만 느립니다. 내부적으로 정규표현식을 사용하여 데이터를 파싱하고, 버퍼 크기도 작습니다(1KB). 반면 BufferedR..

Java 2025.11.18

Java Array

배열(Array)이란?배열은 같은 타입의 데이터를 연속된 메모리 공간에 저장하는 자료구조입니다. 쉽게 말해 같은 종류의 데이터를 한 줄로 나란히 저장하는 상자라고 생각하면 됩니다.배열의 핵심 특징:첫째, 크기가 고정되어 있습니다. 한 번 생성하면 크기를 변경할 수 없습니다. 만약 5개짜리 배열을 만들었다면, 나중에 10개로 늘릴 수 없습니다. 새로운 배열을 만들어 데이터를 복사해야 합니다.둘째, 인덱스로 접근합니다. 배열의 각 요소는 0부터 시작하는 번호(인덱스)로 접근할 수 있습니다. 첫 번째 요소는 인덱스 0, 두 번째 요소는 인덱스 1입니다.셋째, 접근 속도가 매우 빠릅니다. 인덱스를 알면 O(1) 시간, 즉 즉시 해당 요소에 접근할 수 있습니다. 이것이 배열의 가장 큰 장점입니다.넷째, 같은 타입..

Java 2025.11.12

JVM 메모리

클래스 로딩 메커니즘의 전체 흐름Java 프로그램을 실행하면 JVM은 즉시 모든 클래스를 메모리에 올리지 않습니다. 필요한 시점에 동적으로 로딩하는 Lazy Loading 방식을 사용하죠. 이 과정은 Loading, Linking, Initialization 세 단계로 구성됩니다.Loading (로딩): 클래스 로더가 .class 파일을 찾아 바이너리 데이터를 읽고 메서드 영역에 저장합니다. 이때 클래스의 FQCN(Fully Qualified Class Name), 부모 클래스 정보, 메서드와 변수 정보, 접근 제어자 등의 메타데이터가 저장됩니다. 동시에 힙 영역에는 이 클래스를 나타내는 Class 객체가 생성되며, 이 객체는 리플렉션 API의 진입점이 됩니다.Linking (링킹): 링킹은 다시 세 단..

Java 2025.11.04

JDK 완벽 이해하기

개요Java 개발을 시작하려면 가장 먼저 JDK를 설치해야 합니다. 하지만 단순히 "JDK를 설치하세요"라는 말만 듣고 넘어가기엔 아쉬운 부분이 많죠. 오늘은 JDK가 정확히 무엇인지, 내부 구조는 어떻게 되어 있는지, 그리고 어떤 버전을 선택해야 하는지까지 깊이 있게 다뤄보겠습니다. JDK, JRE, JVM - 삼위일체의 관계Java 생태계에서 가장 혼란스러운 부분이 바로 이 세 가지 개념입니다. 각각의 역할과 관계를 명확히 이해하는 것이 중요합니다.JVM (Java Virtual Machine): Java 바이트코드(.class 파일)를 실행하는 가상 머신입니다. 플랫폼 종속적이며, 각 운영체제별로 다른 구현체가 존재합니다. JVM은 클래스 로더, 실행 엔진(인터프리터와 JIT 컴파일러), 가비지 컬..

Java 2025.10.30
반응형