πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

μΈν„°νŽ˜μ΄μŠ€λŠ” νƒ€μž…μ„ μ •μ˜ν•˜λŠ” μš©λ„λ‘œλ§Œ μ‚¬μš©ν•˜λΌ - [4μž₯. ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€(μ•„μ΄ν…œ22)]

Amenable 2023. 5. 7. 23:15

1. μΈν„°νŽ˜μ΄μŠ€μ˜ μ—­ν•  🐣

  μΈν„°νŽ˜μ΄μŠ€λŠ” μžμ‹ μ„ κ΅¬ν˜„ν•œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•  수 μžˆλŠ” νƒ€μž… 역할을 ν•œλ‹€. ν΄λž˜μŠ€κ°€ μ–΄λ–€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€λŠ” 것은 μžμ‹ μ˜ μΈμŠ€ν„΄μŠ€λ‘œ 무엇을 ν•  수 μžˆλŠ”μ§€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ–˜κΈ°ν•΄ μ£ΌλŠ” 것이닀.

  μΈν„°νŽ˜μ΄μŠ€λŠ” 였직 이 μš©λ„λ‘œλ§Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. (λ°‘μ—μ„œ μ‚΄νŽ΄λ³Ό κ²ƒμ΄μ§€λ§Œ μƒμˆ˜ 곡개용 μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©ν•˜μ§€ 말아야 ν•œλ‹€.)

 

2. μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€ μ•ˆν‹°νŒ¨ν„΄ πŸ₯

  μœ„μ—μ„œ λ§ν•œ μΈν„°νŽ˜μ΄μŠ€μ˜ 역할에 λ§žμ§€ μ•ŠλŠ” 예둜 μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λΌλŠ” 것이 μžˆλ‹€. μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λž€ λ©”μ„œλ“œ μ—†μ΄, μƒμˆ˜λ₯Ό λœ»ν•˜λŠ” static final ν•„λ“œλ‘œλ§Œ κ°€λ“ μ°¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§ν•œλ‹€.

public interface PhysicalConstants {

    // μ•„λ³΄κ°€λ“œλ‘œ 수 (1/λͺ°)
    static final double AVOGADROS_NUMBER = 6.022_140_857e23;

    // 볼츠만 μƒμˆ˜ (J/K)
    static final double BOLTZMANN_CONSTANT = 1.380_678_52e-23;

    // μ „μž μ§ˆλŸ‰ (kg)
    static final double ELECTRON_MASS = 9.109_383_56e-31;
}

  μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ μ΄μœ λŠ” 이 μƒμˆ˜λ“€μ„ μ‚¬μš©ν•˜λ €λŠ” ν΄λž˜μŠ€μ—μ„œ μ •κ·œν™”λœ 이름(qualified name)을 μ“°λŠ” κ±Έ ν”Όν•˜κΈ° μœ„ν•΄μ„œλ‹€. ν•˜μ§€λ§Œ μ΄κ²ƒμ€ μ•ˆν‹°νŒ¨ν„΄μ΄λ‹€. μΈν„°νŽ˜μ΄μŠ€λ₯Ό μž˜λͺ» μ‚¬μš©ν•œ μ˜ˆλ‹€.

  클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” μƒμˆ˜λŠ” μ™ΈλΆ€ μΈν„°νŽ˜μ΄μŠ€κ°€ μ•„λ‹ˆλΌ λ‚΄λΆ€ κ΅¬ν˜„μ— ν•΄λ‹Ήν•œλ‹€. λ”°λΌμ„œ μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것은 이 λ‚΄λΆ€ κ΅¬ν˜„μ„ 클래슀의 API둜 λ…ΈμΆœν•˜λŠ” ν–‰μœ„λ‹€.

  ν΄λž˜μŠ€κ°€ μ–΄λ–€ μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ“  μ‚¬μš©μžμ—κ²ŒλŠ” μ•„λ¬΄λŸ° μ˜λ―Έκ°€ μ—†λ‹€. 였히렀 μ‚¬μš©μžμ—κ²Œ ν˜Όλž€μ„ 주기도 ν•˜λ©°, 더 μ‹¬ν•˜κ²ŒλŠ” ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œκ°€ λ‚΄λΆ€ κ΅¬ν˜„μ— ν•΄λ‹Ήν•˜λŠ” 이 μƒμˆ˜λ“€μ— μ’…μ†λ˜κ²Œ λœλ‹€. κ²Œλ‹€κ°€ final이 μ•„λ‹Œ ν΄λž˜μŠ€κ°€ μƒμˆ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€λ©΄ λͺ¨λ“  ν•˜μœ„ 클래슀의 이름곡간이 κ·Έ μΈν„°νŽ˜μ΄μŠ€κ°€ μ •μ˜ν•œ μƒμˆ˜λ“€λ‘œ μ˜€μ—Όλœλ‹€.

 

3. μƒμˆ˜λ₯Ό κ³΅κ°œν•˜λŠ” 방법 (μΈν„°νŽ˜μ΄μŠ€ X) 🐀

  μƒμˆ˜λ₯Ό κ³΅κ°œν•  λͺ©μ μ΄λΌλ©΄ μΈν„°νŽ˜μ΄μŠ€κ°€ μ•„λ‹Œ 더 ν•©λ‹Ήν•œ 3κ°€μ§€ 선택지가 μžˆλ‹€.

πŸ“’ 1. νŠΉμ • ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€μ™€ κ°•ν•˜κ²Œ μ—°κ΄€λœ μƒμˆ˜λΌλ©΄ κ·Έ ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€ μžμ²΄μ— μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.

// MIN_VALUE와 MAX_VALUEκ°€ μ μ ˆν•œ μ˜ˆμ‹œμ΄λ‹€.
@jdk.internal.ValueBased
public final class Integer extends Number
        implements Comparable<Integer>, Constable, ConstantDesc {
        
    @Native public static final int   MIN_VALUE = 0x80000000;

    /**
     * A constant holding the maximum value an {@code int} can
     * have, 2<sup>31</sup>-1.
     */
    @Native public static final int   MAX_VALUE = 0x7fffffff;
    
    ...
}

πŸ“’ 2. μ—΄κ±° νƒ€μž…μœΌλ‘œ λ‚˜νƒ€λ‚΄κΈ° μ ν•©ν•œ μƒμˆ˜λΌλ©΄ μ—΄κ±° νƒ€μž…μœΌλ‘œ λ§Œλ“€μ–΄ κ³΅κ°œν•˜λ©΄ λœλ‹€.

πŸ“’ 3. μΈμŠ€ν„΄μŠ€ν™”ν•  수 μ—†λŠ” μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€μ— λ‹΄μ•„ κ³΅κ°œν•˜μž.

public class PhysicalConstants {
    
    private PhysicalConstants() { } // μΈμŠ€ν„΄μŠ€ν™” λ°©μ§€

    // μ•„λ³΄κ°€λ“œλ‘œ 수 (1/λͺ°)
    public static final double AVOGADROS_NUMBER = 6.022_140_857e23;

    // 볼츠만 μƒμˆ˜ (J/K)
    public static final double BOLTZMANN_CONSTANT = 1.380_678_52e-23;

    // μ „μž μ§ˆλŸ‰ (kg)
    public static final double ELECTRON_MASS = 9.109_383_56e-31;
}