[解決済み】Javaのクラスが空白行でコンパイルが異なるのはなぜですか?
2022-04-10 01:17:01
質問
次のような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
a
0x03
バイトは
0x04
バイトになります。
どのように解決するのですか?
基本的に行番号はデバッグのために保持されているので、ソースコードを変更した場合、メソッドの開始行が異なり、コンパイルされたクラスにはその差が反映されます。
関連
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
-
[解決済み】array[idx++]+="a "は、Java 8ではidxを1回増やすが、Java 9と10では2回増やすのはなぜか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] init-paramとcontext-param