} 위 정적 메서드의 주석에는 초기화를 위해 초기화SystemClass 메서드가 호출된다는 내용이 나와 있습니다. 이 메소드는 할당을 위해 사용되어야 합니다. private static Native void setOut0(PrintStream out)은 로컬 메소드입니다.
글쎄요, 초기화 작업은 초기화 시스템 클래스() 함수에서 이루어집니다. 이 함수는 시스템 스레드가 초기화된 후에 호출됩니다. 즉, 모든 정적 멤버 변수(err out in)가 이 함수에서 초기화됩니다. 예를 들어 다음과 같습니다. FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out); setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")) ); setOut0() 함수는 기본 레이어에 있으며, 여기서 초기화된 객체와 이 out 사이의 연결을 설정합니다
자세한 설명: 중국어 버전 http://www.cnblogs.com/skywan...
jdk7 기반 영어 버전 https://luckytoilet.wordpress...
친애하는 여러분, 먼저 테스트 클래스를 시작할 때, 즉 테스트 클래스를 인스턴스화하면 호출하는 모든 정적 클래스가 먼저 인스턴스화되므로 실제로 System.out.println 문을 실행할 때 , System 클래스의 메서드와 속성이 초기화되었습니다!
정적 {
으아악}
위 정적 메서드의 주석에는 초기화를 위해 초기화SystemClass 메서드가 호출된다는 내용이 나와 있습니다. 이 메소드는 할당을 위해 사용되어야 합니다.
private static Native void setOut0(PrintStream out)은 로컬 메소드입니다.
최종 정적을 봤을 때 첫 번째 반응은 이것이 상수이고 상수를 초기화해야 한다는 것이었습니다. 그런 다음 다시 찾아보니 과연
초기화하기 위해 로컬 메서드를 호출합니다.
글쎄요, 초기화 작업은 초기화 시스템 클래스() 함수에서 이루어집니다. 이 함수는 시스템 스레드가 초기화된 후에 호출됩니다. 즉, 모든 정적 멤버 변수(err out in)가 이 함수에서 초기화됩니다.
예를 들어 다음과 같습니다.
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")) );
setOut0() 함수는 기본 레이어에 있으며, 여기서 초기화된 객체와 이 out 사이의 연결을 설정합니다