У меня есть следующий класс 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
.