Java(16)
-
코딩 테스트를 위한 Java (2-1) - 정적 배열
이 글에서는 코딩 테스트에서 가장 기본임과 동시에 가장 많이 사용되는 자료구조인 배열(Array) 에 대해 살펴봅니다.배열은 거의 모든 자료구조와 알고리즘의 기반이 되며, 문제 해결 과정에서 가장 먼저 고려해야 할 선택지이기도 합니다.특히 코딩 테스트에서는정렬, 투 포인터 (Two Pointer), 슬라이딩 윈도우 (Sliding Window), 누적합 (Prefix Sum), 동적 계획법 (DP)등의 알고리즘들이 대부분 배열을 기반으로 동작합니다.이번 장에서는 다음 내용을 다룹니다.Java 배열의 종류원시형 배열과 객체 배열다차원 배열과 Jagged Array배열의 시간 복잡도Java의 다양한 배열배열(Array)은 동일한 타입의 데이터를 연속된 메모리 공간에 저장하는 자료구조입니다.Java의 배열은 ..
2026.03.04 -
코딩 테스트를 위한 Java (1) - Collection Framework 구조 이해
이 글에서는 Java로 코딩 테스트를 준비할 때 알아야 하는 Collection Framework의 구조와 핵심 개념을 살펴봅니다.단순히 자료구조 사용법을 암기하기 보다, 각 자료구조가 어떤 계층에 속하고 어떤 특징을 가지는지 이해하는 것이 중요합니다.이번 장에서는 다음 내용을 다룹니다.Java Collection Framework의 전체 구조Collection 계열과 Map 계열의 차이Iterable과 Iteratorfor-each 문이 동작하는 원리Map을 순회하는 방법Java의 다양한 자료 구조Java의 자료구조는 크게 두 계열로 나눌 수 있습니다.Collection 계열: 단일 요소들의 집합Map 계열: key-value 쌍의 집합Map은 Collection 인터페이스를 상속하지 않으며 별도의 계..
2026.02.22 -
[Java] JVM(Java Virtual Machine)에 대하여
이 글에서는 Java의 JVM(Java Virtual Machine)의 정의와 구성, 구체적인 동작 원리, 관련 지식에 대해 다룹니다.JVM란 무엇인가?JVM을 사용하는 이유JVM의 동작 원리JVM: Class Loader Sub-SystemJVM: Memory Area Of JVM - RDAMethod AreaHeap AreaThreadJVM: Execution Engine관련 지식마치며.1. JVM란 무엇인가?JVM(Java Virtual Machine)은 자바 바이트 코드를 실행하는 가상머신입니다.자바 애플리케이션이 다양한 플랫폼에서 실행될 수 있도록 하는 핵심 실행 엔진으로 다음과 같이 구성됩니다.Class Loader Sub-SystemMemory Area Of JVMExecution Engin..
2025.09.16 -
[Java] Java개발의 시작, JDK(Java Development Kit)에 대하여
이 글에서는 Java 애플리케이션 개발의 필수 요소인 JDK(Java Development Kit)의 정의와 구성, 그리고 JDK를 중심으로 한 개발 지식까지 함께 다룹니다.JDK란 무엇인가?JDK를 사용하는 이유JDK의 자동 빌드 시스템기타 관련 지식마치며1. JDK란 무엇인가?JDK(Java Development Kit)는 자바 애플리케이션을 개발하고 실행하는 데 필요한 모든 것을 담은 개발 도구 모음입니다.JDK는 크게 두 가지 요소로 구성됩니다.JRE(Java Runtime Environment)JRE는 자바 애플리케이션이 실행될 수 있는 환경입니다.실행에 필요한 가상 머신(Java Virtual Machine)과 표준 API를 제공하는 핵심 라이브러리(Java Class Library)로 구성되..
2025.09.15 -
[Java] 자바 실행 환경, JRE에 대하여
이 글에서는 Java 애플리케이션 실행을 위한 JRE(Java Runtime Environment)의 정의와 구성, 사용하는 이유에 대해 다룹니다.JRE란 무엇인가?JRE를 사용하는 이유마치며1. JRE란 무엇인가?JRE(Java Runtime Environment)는 자바 애플리케이션 실행을 위해 JVM, JCL을 제공하는 소프트웨어 계층입니다. JRE는 다음과 같이 구성되어 있습니다.JVM(Java Virtual Machine)자바 바이트코드를 실행하는 가상 머신입니다.다양한 플랫폼에서 독립적인 실행을 가능하게 하며, 프로그램 실행 흐름을 제어합니다.JCL(Java Class Library)자바 애플리케이션이 자주 사용하는 기능을 표준 API로 제공하는 라이브러리 모음입니다.ex) java.io, j..
2025.09.14 -
[Java] Java에서의 Heap과 Priority Queue(for Algorithm Guide)
목차Heap이란?Priority Queue란?패키지선언 예제주요 연산offer(element) / add(element)peek()poll()최대 힙(Max-Heap) 구현Comparator.reverseOrder() 또는 람다를 이용한 방법네거티브 트릭 (Numeric 데이터에 한정)복합 데이터의 정렬과 Comparator 구현Heap이란?완전 이진 트리(Complete Binary Tree) 형태의 자료구조로, 각 노드가 특정한 순서 조건을 만족한다. 💡완전 이진 트리 구조란?모든 레벨이 완전히 채워지며, 마지막 레벨은 왼쪽부터 순서대로 채워지는 구조정렬 조건최소 힙: 모든 부모 노드의 값 ≤ 자식 노드의 값최대 힙: 모든 부모 노드의 값 ≥ 자식 노드의 값주요 특징 및 시간복잡삽입 및 삭제: O(..
2025.03.28 -
[Java] Java의 다양한 정렬 방법 1 : Primitive / Object
목차Primitive Array 정렬하기Object Array 정렬하기정리예제 코드Java에는 다양한 타입(Primitive / Object / Collections)의 배열이 존재할 수 있으며, 정렬하는 방식도 제각각입니다.이번 글에서는 Primitive / Object 배열을 정렬하는 방법에 대해 알아보겠습니다.1️⃣ Primitive Array 정렬하기Arrays.sort()는 원시 배열을 정렬할 수 있습니다. 기본적으로 오름차순 정렬이 되며, 내부적으로 Dual-Pivot Quicksort 알고리즘을 사용합니다SortPrimitiveArray.javaArrays.sort()를 사용해 Primitive Array를 정렬하는 방법은 다음과 같습니다.package pl.java.D250216;impor..
2025.02.17 -
[Java] Primitive Array에 내림차순 정렬이 없는 이유
목차왜 원시 배열은 내림차순 정렬을 지원하지 않을까?원시 배열을 내림차순 정렬하는 방법정리예제 코드자바에서는 Arrays.sort() 를 사용해 원시(Primitive) 배열을 쉽게 정렬할 수 있습니다. 하지만 원시 타입 배열에 대해 내림차순 정렬은 지원되지 않습니다.이 글에서는 원시 배열에 내림차순 정렬이 지원되지 않는 이유와, 이를 해결할 수 있는 대안에 대해 알아보겠습니다.1️⃣ 왜 원시 배열은 내림차순 정렬을 지원하지 않을까?원시 배열은 기본적으로 객체가 아니기 때문에 Comparator를 사용할 수 없습니다.Arrays.sort()는 원시 타입 배열에 대해 Comparator를 지원하지 않으므로, 정렬 순서를 커스터마이즈할 수 없습니다. 반면, 객체 타입 배열(Integer[], Double[]..
2025.02.16 -
Java에서 Primitive Array 정렬에 Dual-Pivot Quicksort를 선택한 이유
목차원시 배열과 객체 배열의 차이Dual-Pivot Quicksort란?원시 배열에서 Dual-Pivot Quicksort를 사용하는 이유정리Java는 원시 배열(primitive array)을 정렬할 때 Arrays.sort() 메서드를 사용하며, 이 메서드는 내부적으로 Dual-Pivot Quicksort를 사용합니다. 반면, 객체 배열(Object array)의 경우 Timsort를 사용합니다.이 글에서는 원시 배열 정렬에 Dual-Pivot Quicksort가 Timsort보다 선호되는 이유를 원시 배열의 구조와 알고리즘의 특성을 중심으로 설명하겠습니다.1️⃣ 원시 배열과 객체 배열의 차이Java에서 원시 배열과 객체 배열은 메모리 구조와 접근 방식에 차이가 있습니다.원시 배열데이터가 연속된 메모..
2025.02.14 -
equals를 사용하지 않아도 문자열 비교가 가능해?
이 글에서는 Java의 switch문에서 문자열(String) 비교 시, equals()를 명시적으로 사용하지 않고도 올바르게 비교하기 위한 switch의 동작 과정에 대해 알아보겠습니다. switch에서 문자열을 비교하는 방법switch의 내부 동작 원리switch vs if-elseswitch 사용 시 주의사항정리회고참고 및 예제 코드switch에서 문자열을 비교하는 방법Java 7 이후에는 정수나 열거형 뿐 아니라 문자열도 switch문의 조건으로 사용할 수 있습니다. 이는 switch의 값과 case의 문자열을 String.equals 를 사용한 것처럼 비교하기 때문입니다.The switch statement compares the String object in its expression with..
2025.02.13