


public interface PhysicalConstants {
		static final double AVOGADROS_NUMBER = 6.022_140_857e23;
		static final double BOLTZMANN_CONSTANT = 1.380_648_52e-23;
		static final double ELECTRON_MASS = 9.109_383_56e-31;
}
java.io.Object.StreamConstants 실수로 포함된 것으로 생각해야 하고 따라 해서는 절대 안됨결론 🚀
상수 인터페이스의 활용을 억제하기 위해 나오지 않았나..? 라는 생각이 든다.static 필드나 메소드에 접근할려면 일반적으로 이렇게 접근할 것 이다.
	{ClassName} + {.} + {Method | Field}
이러한 접근방식에 단점은 매번 사용하려는 메소드나 필드 앞에 Class 명을 기술하는게 매우 번거롭다는 것이다.
하지만,  static import 을 이용하면 획기적으로 이러한 문제를 줄일 수 있다.
static import 를 사용하기 전 💡

Math API 에 있는 필드와 메소드를 사용하기 위해선 위와 같은 문법으로 기술해야한다. 만약 Math API 를 사용하는 곳이 많아진다면??아마 너무 번거롭지 않을까??
static import 를 사용한 후 💡

Math 클래스를 작성하지 않아도 필드나 메소드에 접근이 가능해졌다. 이로써 번거로운 작업은 조금이나마 덜어졌다고 말할 수 있다.
위와 같이 정적인 필드나 메소드에 접근할 때 번거로움을 줄일 수 있지만, 너무 과하게 사용하면 오히려 가독성이 떨어질 것이고, 변수명, 메소드명으로만 나와 있기 때문에 클래스의 멤버로 오해하기 쉬울 것이다. 그렇기에 일정 시간이 지나면 코드를 분석할 때 어려움을 겪을 것 같다.

환경변수란? 🤔
환경변수 사용하는 이유 💡
/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk 이러한 경로에 자바가 설치되었다고 가정해보면/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk 경로로 이동하여 javac 명령을 실행해야만 한다.환경변수 설정 📌
/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk 에 설치된다java -version
vi ~/.zshrc 명령어를 입력한다
source ~/.zshrc 명령어를 입력하여 수정된 zshrc 파일을 설정해준다.    
.class 파일을 실행할 때 사용할 클래스들의 위치를 가상머신에게 알려주는 역할을 한다.
-claspath 옵션을 사용하지 않을 경우 클래스 파일이 위치한 현재 디렉토리를 기본 classpath로 잡아준다
-classpath 옵션을 사용하지 않을 때

        public class WhatYourName {
            public static void main(String[] args) {
                AAA a = new AAA();
                a.showName();
        
                BBB b = new BBB();
                b.showName();
        
            }
        }
        public class AAA {
            public void showName() {
                System.out.println("AAA");
            }
        }
        public class BBB {
            public void showName() {
                System.out.println("BBB");
            }
        }
javac WhatYourName.java 명령어를 이용하여 컴파일을 하면

 각 자바 파일에 해당하는 클래스 파일이 만들어진다.
이 후 java WhatYourName 명령어를 입력하면 AAA, BBB가 출력되는 결과를 확인할 수 있다.
만약 AAA.class, BBB.class 파일을 옮긴다면??
 pathtest라는 새로운 디렉토리를 만든 후 그 AAA.class, BBB.class 파일을 옮긴 후에 다시 한번 java WhatYourName을 실행시켜봤다

AAA 라는 클래스를 찾을 수 없다는 에러가 나왔다. 이 뜻은 WhatYourName에서 AAA 클래스를 참조하고 있는데 참조하고 있는 AAA 클래스를 찾을 수 없다는 것이다. 그 이유는 위에서 AAA.class, BBB.class 파일을 pathtest 디렉토리로 옮겼기 때문이다. 그럼 어떻게 해야할까 바로 이때 사용하는 옵션이 -classpath 옵션이다.
바로 결과부터 보면
-classpath 뒤에 오는 "파일 절대 경로"를 입력해주면 된다.
-classpath 옵션은 자바를 실행할 때 사용할 클래스들의 위치를 가상머신에게 알려주는 역할을 한다. 즉 WhatYoutName.class가 실행될 때 필요한 AAA.class, BBB.class의 위치를 가상머신에게 알려주는다는 것이다.
. : 현재 디렉토리에서 클래스를 찾는 다는 뜻이고
;(:) (윈도우에선 ;, 리눅스나, macOS일 경우 : 사용) : 경로와 경로를 구분해주는 구분자
pathtest (개인별로 디렉토리 명이 다르기 때문에 구분해서 사용하자) : 현재 디렉토리에 없으면 현재 디렉토리의 하위 디렉토리 중 pathtest에서 클래스를 찾으라는 의미이다.
| 제어자 | 같은 클래스 | 같은 패키지 | 자식 클래스 | 전 체 | 적용 대상 | 비고 | 
|---|---|---|---|---|---|---|
| public | 접근 가능 | 접근 가능 | 접근 가능 | 접근 가능 | 클래스, 멤버 | |
| protected | 접근 가능 | 접근 가능 | 접근 가능 | 접근 불가능 | 멤버 | 클래스에 적용할 수 없음 | 
| default | 접근 가능 | 접근 가능 | 접근 가능 | 접근 불가능 | 클래스, 멤버 | 접근 지정자를 생략한 경우를 말함 | 
| private | 접근 가능 | 접근 불가능 | 접근 불가능 | 접근 불가능 | 멤버 | 클래스에 적용할 수 없음 |