상수 (static final)
Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 18번째.
static과 final을 결합하면 상수가 생성됩니다. 이는 클래스에 속하며 절대 변할 수 없는 값입니다. 이것이 Java에서 상수를 정의하는 표준적인 방법입니다.
public class GameSettings {
public static final int MAX_PLAYERS = 4;
public static final double GRAVITY = 9.81;
public static final String GAME_TITLE = "Space Adventure";
}관례적으로, 상수 이름은 일반 변수와 구분하기 위해 UPPER_SNAKE_CASE를 사용합니다. static이면서 final이기 때문에, 클래스 이름을 통해 접근하며 그 값은 절대 변하지 않음이 보장됩니다:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // 오류! 수정할 수 없습니다상수는 일반적으로 애플리케이션 전체에서 공유되도록 설계되었기 때문에 public으로 선언됩니다. Math.PI와 같은 값을 생각해 보세요. 이것은 어떤 코드에서도 사용할 수 있는 public static final 상수입니다.
왜 하드코딩된 값 대신 상수를 사용해야 할까요? 코드 전반에 걸쳐 4를 작성하고 나중에 이를 6으로 변경해야 한다면, 모든 발생 지점을 찾아 업데이트해야 합니다. MAX_PLAYERS와 같은 상수를 사용하면, 한 곳에서만 변경하면 됩니다.
상수는 또한 코드를 더 읽기 쉽게 만듭니다 - MAX_PLAYERS는 모호한 4보다 더 명확합니다.
챌린지
쉬움중요한 수학적 값들을 상수로 저장하는 MathConstants 유틸리티와, 해당 상수들을 사용하여 계산을 수행하는 CircleCalculator를 만들어 봅시다.
코드를 정리하기 위해 두 개의 파일을 생성하게 됩니다:
MathConstants.java:public static final필드를 사용하여 수학적 상수들을 보유하는 클래스를 생성합니다:PI: 값3.14159E(오일러 수): 값2.71828GOLDEN_RATIO: 값1.61803
Main.java: 작성한 상수들을 사용하여 원 관련 계산을 수행합니다. 반지름을 입력으로 받아 다음 세 줄을 출력합니다:- 원의 넓이:
Area: [value] - 원의 둘레:
Circumference: [value] - 황금비가 적용된 지름:
Golden Diameter: [value]
- 원의 넓이:
계산 공식은 다음과 같습니다:
- Area = PI * radius * radius
- Circumference = 2 * PI * radius
- Golden Diameter = 2 * radius * GOLDEN_RATIO
하나의 입력을 받게 됩니다: 반지름 (double).
모든 출력 값은 String.format("%.2f", value)를 사용하여 소수점 둘째 자리까지 포맷팅하세요. 상수는 MathConstants.PI와 같이 클래스 이름을 통해 접근하세요.
치트 시트
static과 final을 결합하면 상수(constant)가 생성됩니다. 상수는 클래스에 속하며 절대 변경할 수 없는 값입니다:
public class GameSettings {
public static final int MAX_PLAYERS = 4;
public static final double GRAVITY = 9.81;
public static final String GAME_TITLE = "Space Adventure";
}관례적으로 상수 이름은 UPPER_SNAKE_CASE를 사용합니다. 클래스 이름을 통해 상수에 접근합니다:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // 오류! 수정할 수 없습니다상수는 일반적으로 애플리케이션 전체에서 공유하기 위해 public으로 선언됩니다. 상수는 하드코딩된 값을 의미 있는 이름으로 대체하여 코드를 더 유지보수하기 쉽고 읽기 좋게 만듭니다.
직접 해보기
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
// TODO: MathConstants.PI를 사용하여 넓이 계산
// 공식: PI * radius * radius
// TODO: MathConstants.PI를 사용하여 둘레 계산
// 공식: 2 * PI * radius
// TODO: MathConstants.GOLDEN_RATIO를 사용하여 황금 지름 계산
// 공식: 2 * radius * GOLDEN_RATIO
// TODO: 소수점 둘째 자리까지 형식을 맞춰 결과 출력
// 형식 지정을 위해 String.format("%.2f", value) 사용
// 출력 형식:
// Area: [value]
// Circumference: [value]
// Golden Diameter: [value]
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
4상속
상속의 기초 (extends)super 키워드메서드 오버라이딩 (@Override)생성자 체이닝Object 클래스단일 및 다중 레벨 상속다중 클래스 상속이 불가능한 이유요약 - 직원 계층 구조