다음 Java 클래스가 있습니다
public class HelloWorld {
public static void main(String []args) {
}
}
이 파일을 컴파일하고 결과 클래스 파일에서 sha256을 실행하면
9c8d09e27ea78319ddb85fcf4f8085aa7762b0ab36dc5ba5fd000dccb63960ff HelloWorld.class
다음으로 클래스를 수정하고 다음과 같이 빈 줄을 추가했습니다.
public class HelloWorld {
public static void main(String []args) {
}
}
다시 동일한 결과를 얻을 것으로 예상되는 출력에서 sha256을 실행했지만 대신
11f7ad3ad03eb9e0bb7bfa3b97bbe0f17d31194d8d92cc683cfbd7852e2d189f HelloWorld.class
이 TutorialsPoint 기사 에서 다음 을 읽었습니다 .
주석이 포함 된 공백 만 포함 된 행을 빈 행이라고하며 Java는이를 완전히 무시합니다.
그래서 내 질문은 Java가 빈 줄을 무시하기 때문에 컴파일 된 바이트 코드가 두 프로그램 모두 다른 이유는 무엇입니까?
즉, 바이트 에서의 차이 HelloWorld.class
는 0x03
바이트로 대체됩니다 0x04
.
Set
내부에서 무작위로 새로운 불변의을 사용하면 각 실행마다 다른 순서를 생성 할 수 있습니다. 또한 컴파일 타임을 포함하는 사용자 정의 속성을 추가 할 수 있습니다. 그리고 등등…