Java 19

[Java] JVM 런타임 데이터 영역 : 메서드, 스택, 힙 영역

JVM의 메서드, 스택, 힙 영역JVM 메모리는 총 5가지 영역으로 구성되며, 그중 메서드, 힙, 스택 영역은 자바 애플리케이션에서 변수나 객체를 저장하는 주요 런타임 메모리입니다.메서드 영역 (Method Area) 메서드 영역은 JVM이 시작될 때 생성되는 메모리 공간으로 모든 스레드가 공유하는 구조입니다. 이 영역은 클래스 단위의 정보를 저장하는 공간으로, 크게 3가지의 데이터가 저장됩니다.첫번째로는 클래스의 바이트 코드가 로딩됩니다. 즉, 클래스에 선언된 메서드, 생성자, 필드 등에 대한 모든 실행 코드인 클래스 정보가 이곳에 저장됩니다.두번째로는 static 변수입니다. 클래스 레벨에서 공유되는 static 필드는 인스턴스와 무관하게 메서드 영역에 저장됩니다. 예를 들어, Math.PI 같은 ..

[Java] 생성자 (Constructor)

생성자 (Constructor)💡생성자란?객체가 생성될 때 자동으로 호출되어, 객체의 초기 상태를 설정하는 특별한 메서드 클래스 이름과 동일한 이름을 가져야 하며, 리턴 타입이 없다.한마디로 정리하면, 생성자는 객체가 생성될 때 필드 값을 초기화하기 위해 자동으로 호출되는 특별한 메서드이며, 반환 타입이 없고 클래스 이름과 동일해야 한다.A class contains constructors that are invoked to create objects from the class blueprint. Constructor declarations look like method declarations—except that they use the name of the class and have no return..

[Java] 절차 지향 프로그래밍 vs 객체 지향 프로그래밍

절차 지향 프로그래밍 (Procedural Programming)💡절차 지향 프로그래밍 이란?절차 지향 프로그래밍은 프로그램의 실행 흐름이 위에서 아래로 순차적으로 진행되는 방식입니다.절차적 프로그래밍 언어는 시간의 흐름에 따라 코드를 작성합니다. ✅ 예시C 언어는 절차 지향 프로그래밍의 대표적인 예로, 프로그램을 함수의 집합으로 구성하며, 각 함수는 특정 작업을 수행합니다.#include int sum(int a, int b) { return a + b;}int main() { int result = sum(5, 3); printf("Sum: %d\n", result); return 0;}객체 지향 프로그래밍 (Object-Oriented Programming, OOP)💡객체 ..

[Java] 클래스(Class), 객체(Object), 인스턴스(Instance)

클래스(Class)💡클래스(Class)란?Java에서 클래스는 객체 지향 프로그래밍의 핵심 요소로, 관련된 데이터와 동작을 하나의 단위로 묶어 코드의 재사용성과 유지보수성을 높입니다.클래스를 사용하면 int, String과 같은 타입을 직접 만들 수 있습니다. 즉, 사용자가 직접 정의하는 사용자 정의 타입을 만드는 설계도가 클래스입니다.✅ 예제 : 클래스를 사용하지 않은 경우public class NoClassExample { public static void main(String[] args) { // Bicycle 1 int cadence1 = 0; int speed1 = 0; int gear1 = 1; cadence1 = 50; ..

[Java] GC(Garbage Collection)

GC(Garbage Collection)💡GC(Garbage Collection)이란?객체를 가리키는 참조값(주소)가 null인 경우, 해당 객체의 메모리에 접근할 수 없게되므로 이 객체를 찾을 수 없게된다. 이와 같은 경우에 Java의 JVM이 GC를 통해 자동으로 메모리를 제거한다.GC는 어떤 메모리 부분이 더 이상 사용되지 않는지를 자동으로 탐지하고, 해제하여 새로운 객체를 위한 공간을 확보한다. The garbage collector (GC) automatically manages the application's dynamic memory allocation requests. ✅ 예제Data data = new Data(); // x001이라는 참조값을 가진 객체 생성data = null; ..

[Java] 배열 (Arrays)

배열 (Arrays)💡배열(Arrays)이란?Java에서 배열은 동일한 타입의 여러 값을 저장할 수 있는 컨테이너 객체입니다. 배열을 사용하면 같은 타입의 변수를 여러 개 선언하는 번거로움을 줄일 수 있습니다.​ An array is a container object that holds a fixed number of values of a single type. 💡사용하는 이유같은 타입의 변수 여러 개를 만들어야 할 때 사용한다.✅ 예시 : 배열 없이 변수 선언let score1 = 90;let score2 = 85;let score3 = 78;let score4 = 92; ✅ 예시 : 배열 사용let scores = [90, 85, 78, 92];배열은 참조형(Reference Type)💡배열이 ..

[Java] 변수의 생존 범위 (Scope)

변수의 생존 범위, Scope💡변수는 하나의 코드 블록 { } 안에서만 사용 가능하다.Java에서는 변수가 선언된 블록 { } 내에서만 접근할 수 있다. 블록이 종료되면 해당 변수는 더 이상 접근할 수 없다. The scope of a local variable declaration in a block is the rest of the block in which the declaration appears.Scope가 존재하는 이유1. 비효율적인 메모리 사용 방지코드 블럭이 종료될 때 까지 선언된 변수는 메모리 공간을 차지하므로 특정 코드 블럭에서만 사용되는 변수는 불필요하게 메모리를 낭비할 수 있다. 변수를 필요한 범위 내에서만 선언하면, 해당 변수는 블록이 종료될 때 메모리에서 해제되어 메모리 효율성..

[Java] 제어 흐름 문 (Control Flow Statements)

if💡else-ifif-then-else 구조는 여러 조건을 순차적으로 평가하며, 첫 번째로 true인 조건의 블록만 실행됩니다. 따라서 이후의 else if 조건들은 평가되지 않아 중복 체크를 피할 수 있습니다. 이는 효율적인 조건 분기 구조를 제공합니다.​ The if-then-else statement provides a secondary path of execution when an 'if' clause evaluates to false.서로 독립적인 조건을 처리해야 할 경우, if-else 대신 별도의 if 문을 사용하는 것이 더 적절할 수 있습니다. 이는 각 조건이 서로 영향을 주지 않고 독립적으로 평가되도록 합니다.​✅ 예제int temp = 35;boolean isRaining = tru..

[Java] 변수(Variables)

변수(Variables)자바에서 변수란 데이터를 저장하고 조작하기 위해 사용되는 이름이 붙은 메모리 공간입니다. 변수는 특정 타입을 가지며, 이 타입은 변수에 저장될 수 있는 값의 종류와 수행할 수 있는 연산을 결정합니다.​ 변수가 필요한 이유자바는 정적 타입 언어로, 모든 변수와 표현식은 컴파일 시점에 타입이 결정됩니다. 이는 변수의 타입이 컴파일 타임에 알려져 있어야 함을 의미합니다. 이러한 강한 정적 타이핑은 컴파일 시점에 오류를 감지하는 데 도움을 줍니다. The Java programming language is also a strongly typed language, because types limit the values that a variable (§4.12) can hold or that..