본문 바로가기

Java20

[JAVA] 자바의 실행 흐름 자바(Java)의 동작 원리: 컴파일부터 실행까지 자바(Java)는 “한 번 작성하면, 어디서든 실행 가능(Write Once, Run Anywhere)”한 언어로, 이를 가능하게 하는 핵심 요소는 JVM(Java Virtual Machine, 자바 가상 머신)이다.자바 코드가 실행되는 과정은 소스 코드 → 바이트코드 변환 → JVM에서 실행의 단계로 진행된다. 1. 자바 실행 과정 개요 자바 프로그램은 다음과 같은 단계를 거쳐 실행된다. 1. 소스 코드 작성 (.java 파일) 2. 컴파일러(javac)가 바이트코드(.class 파일)로 변환 3. JVM(Java Virtual Machine)이 바이트코드를 해석하고 실행 4. 네이티브 코드(기계어)로 변환 후 실행  2. 자바 실행 과정 상세 분석 1.. 2025. 3. 8.
[Java] 간단한 예시로 SOLID원칙 적용해보기 SOLID 원칙 개요  1. SRP (Single Responsibility Principle): 단일 책임 원칙 – 클래스는 하나의 책임만 가져야 한다. 2. OCP (Open/Closed Principle): 개방/폐쇄 원칙 – 클래스는 확장에는 열려 있고, 수정에는 닫혀 있어야 한다. 3. LSP (Liskov Substitution Principle): 리스코프 치환 원칙 – 서브 클래스는 부모 클래스의 기능을 그대로 유지해야 한다. 4. ISP (Interface Segregation Principle): 인터페이스 분리 원칙 – 사용하지 않는 기능이 포함되지 않은 인터페이스를 정의해야 한다. 5. DIP (Dependency Inversion Principle): 의존성 역전 원칙 – 고수준 .. 2024. 10. 6.
[Java] 익명클래스, 함수형 인터페이스, 익명함수(람다식) 익명 클래스(Anonymous Class) 익명 클래스는 이름이 없는 클래스로, 한 번만 사용되거나 간단한 기능을 구현할 때 사용됩니다. 익명 클래스는 인터페이스나 추상 클래스를 즉시 구현하거나 확장하는 데 사용됩니다. 익명 클래스의 특징  1. 이름 없음: 클래스를 정의하면서 바로 인스턴스를 생성하는 방식으로, 클래스 이름이 없습니다. 2. 재사용 불가: 익명 클래스는 한 번 정의되고 나면 재사용할 수 없습니다. 3. 즉석에서 정의: 인터페이스나 추상 클래스의 구현체를 한 번만 정의하고 사용할 때 주로 사용됩니다. 4. 복잡한 구현 가능: 하나 이상의 메서드를 포함하거나 여러 개의 메서드를 구현할 수 있습니다. 익명 클래스 예시public class Main { public static void .. 2024. 10. 5.
[Java] Stream 자바의 Stream API는 자바 8에서 도입된 함수형 프로그래밍 개념을 지원하는 기능으로, 데이터 컬렉션(예: 배열, 리스트 등)을 효율적이고 간결하게 처리할 수 있게 해줍니다. 스트림은 데이터의 흐름을 처리하기 위한 추상화된 계층으로, 주로 데이터 필터링, 변환, 집계 같은 작업을 수행할 때 사용됩니다. 1. Stream의 개념  • Stream은 데이터 소스를 기반으로 한 데이터 처리 연산의 흐름입니다. Stream은 컬렉션(예: List, Set, Map)이나 배열을 처리하는 데 사용됩니다. • 스트림은 데이터를 처리할 때 원본 데이터를 변경하지 않고, 데이터 흐름을 함수형 방식으로 처리합니다. 즉, 기존 데이터를 변환하여 새로운 컬렉션을 생성하거나, 값을 집계하는 작업을 수행합니다. 2. Str.. 2024. 9. 29.
[Java] Optional 자바에서 **Optional**은 null 처리를 안전하게 할 수 있도록 도와주는 유틸리티 클래스입니다. 자바 8에서 도입되었으며, null 값을 직접 다루는 대신 값이 있거나 없을 수 있는 컨테이너로, null 포인터 예외를 피하고 더 명확한 코드를 작성하는 데 도움을 줍니다. 1. Optional의 기본 개념  • **Optional**은 값이 있을 수도 있고, 없을 수도 있는 상황에서 null을 사용하지 않고, 더 명확하게 비어 있음을 표현할 수 있는 클래스로 설계되었습니다. • **null 포인터 예외(NullPointerException, NPE)**는 자바에서 자주 발생하는 오류 중 하나입니다. Optional을 사용하면 null을 직접 사용하지 않고, 값이 없을 때의 처리를 안전하게 할 수 .. 2024. 9. 29.
[Java] 리스트(List) 와 배열(Array)의 차이점 배열(Array)과 리스트(List)의 차이점에 대해 이론적인 부분을 중점으로 설명하고, 간단한 코드 예시를 통해 차이점을 이해할 수 있도록 하겠습니다. 1. 배열(Array) 1.1 기본 개념  • 배열은 고정된 크기를 가진 동일한 타입의 데이터를 저장하는 자료구조입니다. 한 번 생성된 배열의 크기는 변경할 수 없습니다. • 배열은 인덱스를 통해 **O(1)**의 시간 복잡도로 빠르게 요소에 접근할 수 있습니다. • 배열은 메모리에서 연속된 공간을 차지하며, 각 요소는 연속적으로 저장됩니다. 이는 메모리 사용 효율이 높고, 액세스 속도가 빠르다는 장점이 있습니다. 1.2 배열의 특징  • 고정 크기: 배열은 선언 시 크기가 고정되며, 중간에 크기를 변경할 수 없습니다. • 동일한 타입: 배열은 동일한 .. 2024. 9. 29.