1. 程式人生 > >菜鳥筆記 -- Chapter 5.4 Dead Code

菜鳥筆記 -- Chapter 5.4 Dead Code

div static imp pre jd-gui system 語句塊 nbsp ack

不知道有沒有前輩註意過,當你編寫一段“廢話式的代碼時”會給出一個Dead Code警告,點擊警告,那麽你所寫的廢物代碼會被編譯器消除,那麽如果你不理睬這個警告呢?編譯後會是什麽樣的呢?下面我們寫點代碼,來查看一下編譯後的結果,這裏使用反編譯工具jd-gui.exe。代碼如下:

package cn.five.four;

public class Test {
    public static void main(String[] args) {
        int a = 7;
        int b = 9;
        test1();
        test2(a, b);
    }
    
//廢話代碼--條件語句中,已經可以確定條件真假的會被認為是死代碼(Dead Code),也叫無效代碼 public static void test1(){ if(5>6){ System.out.println("jdk1.7輸出廢話代碼!!"); }else { System.out.println("都不用編譯,你自己都知道要輸出這段代碼!"); } } //條件不確定的不是死代碼 public static void test2(int a,int
b){ if(a>b){ System.out.println("條件語句塊中只有一句代碼!"); }else if (a == b) { System.out.println("條件語句塊中只有兩句代碼!"); System.out.println("條件語句塊中只有兩句代碼!"); }else { System.out.println("會輸出這句嗎?"); } } }

反編譯

package
cn.five.four; import java.io.PrintStream; public class Test { public static void main(String[] args) { int a = 7; int b = 9; test1(); test2(a, b); } public static void test1() { System.out.println("都不用編譯,你自己都知道要輸出這段代碼!"); } public static void test2(int a, int b) { if (a > b) { System.out.println("條件語句塊中只有一句代碼!"); } else if (a == b) { System.out.println("條件語句塊中只有兩句代碼!"); System.out.println("條件語句塊中只有兩句代碼!"); } else { System.out.println("會輸出這句嗎?"); } } }

上面我們知道了編譯器在編譯後會自動將死代碼優化為已知的結果,這是編譯器的優化。不過聰明如我們的程序員應該不至於寫出這樣的代碼,在這裏僅僅是表明編譯器也是可以優化我們的代碼的。

菜鳥筆記 -- Chapter 5.4 Dead Code