본문 바로가기

Dev/Java23

『Java』 final에 대한 이해 finalfinal 키워드는 변수, 메서드, 또는 클래스에 대한 변경 불가능 하도록 하는 데 사용된다.final 키워드를 사용하면 그 요소는 한 번 할당되거나 정의된 후 변경될 수 없다.   변수에 final 사용지역 변수final로 선언된 지역 변수는 한 번만 값을 할당할 수 있다. 초기화 이후에는 그 값이 변경될 수 없다.  필드 (멤버 변수) 객체의 필드에 final을 사용하면 객체가 생성될 때 필드를 초기화해야 하며, 그 이후에는 그 필드의 값을 변경할 수 없다.  파라미터 메서드의 파라미터를 final로 선언하면, 메서드 안에서 파라미터의 값을 변경할 수 없다. 이는 메서드 안에서 파라미터가 참조하는 데이터의 무결성을 유지한다.  메서드에 final 사용 final로 선언된 메서드는 하위 클래.. 2024. 10. 24.
『Java』 static 변수와 static 메서드를 왜 쓸까? static static이란 '정적인', '고정적인'이라는 사전적 의미를 가진다. Java 관점에서 해석하면 '클래스의' 또는 '공통적인'이라는 의미로 사용된다. static 멤버는 메모리에서 메서드 영역에 위치한다.   static 변수 static 변수는 클래스 변수라고도 불리며, 클래스의 모든 인스턴스에서 공통된 값을 유지해야 할 때 사용한다. 클래스가 메모리에 로딩될 때 생성되며 프로그램이 종료될 때까지 메모리에 유지된다. 객체를 생성하지 않고도 '클래스이름.변수명'으로 호출할 수 있다.   static 메서드 static 메서드는 클래스 메서드라고도 불린다. 인스턴스 변수를 사용할 수 없기 때문에, 인스턴스와 관계없는 기능을 제공하는 메서드를 static 메서드로 정의한다. 예를 들어, 유틸리티.. 2024. 10. 24.
『Java』 Java Virtual Machine & Runtime Data Areas JVM (Java Virtual Machine)JVM은 자바 애플리케이션을 실행하기 위한 가상 머신이다. 자바 소스 코드로 부터 컴파일 과정을 거쳐 바이트 코드(.class)를 실행한다. 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작 가능하다. Java는 플랫폼 종속적이지 않다.컴파일된 바이트 코드로 어떤 JVM에서도 동작 시킬 수 있다.JVM은 플랫폼 종속적이다.리눅스의 JVM과 윈도우의 JVM은 서로 다르다.  Java Application 실행 과정 자바로 개발된 애플리케이션을 실행하면 JVM은 OS로부터 메모리를 할당한다.자바 컴파일러(javac)가 자바 소스 코드(.java)를 자바 바이트 코드(.class)로 컴파일한다.클래스 로더를 통해 JVM Runtime Data Area로 로.. 2024. 10. 23.
『Java』 Lombok은 어떤 원리로 동작할까? Lombok은 컴파일 과정의 Annotation Processing 단계에 개입하여,소스 코드에 대한 AST(Abstract Syntax Tree, 추상 구문 트리)를 수정하거나 필요한 코드를 자동 추가한다. 동작 구조는 다음과 같다. 단계핵심설명1단계javac의 컴파일 과정자바 소스 파일을 읽고, AST(Abstract Syntax Tree)로 변환.2단계Lombok의 역할Lombok이 컴파일 중 어노테이션을 처리하고 AST(Abstract Syntax Tree)에 필요한 코드 추가.3단계바이트 코드 생성수정된 AST를 기반으로 바이트 코드(.class 파일) 생성.4단계컴파일 단계와 Annotation ProcessingLombok이 AST를 수정하며, 필요 시 컴파일 재시작 가능.   자주 사용하는.. 2024. 10. 21.
『Java』 오랜만에 Java 문법 오랜만에 자바 기본 문법을 복습해 보았는데 반가웠다. 허허특별히 어려운 건 없었고 강의를 수강하면서 리마인드 하면 좋을 만한 내용들을 정리해보려 한다.  스코프변수는 선언한 위치에 따라 지역 변수, 멤버 변수(클래스 변수, 인스턴스 변수)와 같이 분류된다. 지역 변수는 이름 그대로 특정 지역에서만 사용할 수 있는 변수라는 뜻이다.멤버 변수(클래스 변수, 인스턴스 변수)는 클래스 내부에 선언된 변수로, 다시 클래스 변수와 인스턴스 변수로 나뉜다.클래스 변수 (static 변수)인스턴스 변수static 키워드가 붙은 변수로, 클래스 로더가 클래스를 메모리에 로드할 때 초기화된다. 모든 객체가 해당 변수를 공유한다.객체마다 독립적으로 존재하는 변수로, 객체가 생성될 때마다 초기화된다.  변수의 접근 가능한 범.. 2024. 10. 20.