<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * 編譯時使用`javac`指令,將源碼編譯生成字節碼,并存入到對應的`.class`文件中。 ```java package javabasic; public class ByteCodeSample { public static void main(String[] args) { int i = 1, j = 5; i++; ++j; System.out.println(i); System.out.println(j); } } ``` 使用`javac ByteCodeSample.java` 編譯生成`ByteCodeSample.class`文件,使用`javap -c ByteCodeSample.class`對字節碼進行反匯編,查看字節碼內容。 ```java Compiled from "ByteCodeSample.java" public class javabasic.ByteCodeSample { public javabasic.ByteCodeSample(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_1 //將常量1放到棧頂 1: istore_1 //將棧頂的值放到局部變量1中 2: iconst_5 //將常量2放到棧頂 3: istore_2 //將棧頂的值放到局部變量2中 4: iinc 1, 1 //將變量1加1 7: iinc 2, 1 //將變量2加1 10: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 13: iload_1 14: invokevirtual #3 // Method java/io/PrintStream.println:(I)V 17: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 20: iload_2 21: invokevirtual #3 // Method java/io/PrintStream.println:(I)V 24: return } ``` ![](https://github.com/xmisaka/JavaOffer/raw/master/Documents/imgs/java%E5%B9%B3%E5%8F%B0%E6%97%A0%E5%85%B3%E6%80%A7.png) * 運行時`.class`文件是跨平臺的基礎,`Java`源碼首先被編譯成字節碼,再由不同平臺的`JVM`進行解析, `Java`語言在不同的平臺運行時不需要重新進行編譯,`Java`虛擬機在執行字節碼的時候,把字節碼解釋成具體平臺上的機器指令。 > Q:為什么`JVM`不直接將源碼解析成機器碼去執行 > A:每次執行的時候都需要進行各種語法、句法、語義的檢查,即每次執行的時候這些分析的結果都不會保存下來, > 要重新進行編譯,重新去分析,這樣整體的性能就會受到影響。同時,也可以脫離`Java`的束縛,將別的語言解析成字節碼,同樣能被`JVM`執行。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看