java的斷言(Assert)


1. 斷言(Assert  [ə'sɝtvt. 維護,堅持;斷言;主張;聲稱)

    作用:其實就是用來調試程序的,不過目測使用的很少。

    先來看兩個例子,然后再來解釋:

    1.1. 先定義一個 TestAssert類

 1 public class TestAssert{
 2     public static void main(String[] args){
 3         TestAssert ta = new TestAssert();
 4         ta.Test(-99);
 5     }
 6     
 7     public void Test(int age){
 8        //assert關鍵字,再加一個布爾表達式,但表達式結果為false時,程序就會退出
 9        //並拋出一個AssertionError,所以斷言是error級別的
10         assert age>=0;//滿足條件則繼續運行
11         System.out.println("繼續執行,輸入的年齡是:"+age);
12     }
13 }
View Code

        首先編譯 javac TestAssert.java

        然后正常執行: java TestAssert,結果是:

       

         啟動斷言, java -ea TestAssert ,結果是:

       

         或者使用 java -enableassertions TestAssert,結果是一樣的:

       

        可以看到,拋出的類型是 java.lang.AssertionError

      至於顯式關閉斷言的命令就不測試了,個人感覺那是脫褲子放屁的事,有興趣的可以自己測試一下。

    1.2. 斷言 后面附帶信息的例子:

         還是使用上面的類 TestAssert,稍作修改:

 1 public class TestAssert{
 2     public static void main(String[] args){
 3         TestAssert ta = new TestAssert();
 4         ta.Test(-99);
 5     }
 6     
 7     public void Test(int age){
 8        //assert關鍵字,再加一個布爾表達式,但表達式結果為false時,程序就會退出
 9        //並拋出一個AssertionError,所以斷言是error級別的
10         assert age>=0:"不能輸入這種不合理的年齡啊";//滿足條件則繼續運行
11         System.out.println("繼續執行,輸入的年齡是:"+age);
12     }
13 }
View Code

        首先編譯 javac TestAssert.java

        然后正常執行: java TestAssert,結果是:

       

              因為默認沒開啟斷言,所以結果還是跟上面一樣,

         啟動斷言, java -ea TestAssert ,結果是:

       

              很明顯,結果中輸出了我們剛剛寫的字符串,這樣可以增強可讀性

         或者使用 java -enableassertions TestAssert,結果是一樣的:

       

2. 使用方法,(需要使用命令行)

   2.1. 開啟斷言功能(默認是關閉的)

               java -ea TestAssert   ----(ea就是enableassertions的縮寫)

       或者:java -enableassertions TestAssert

   2.2. 關閉(雖然默認是關閉的,但你也可以顯示去關閉它,其實這個參數根本沒有,哈哈)

               java -da TestAssert

       或者:java -disableassertions TestAssert 

 

3. 斷言的使用格式:

    3.1. 普通格式 assert 布爾表達式;

           eg: int a = 0;

                assert a>100;

    3.2. 增強格式 assert 布爾表達式:"字符串";

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM