java中的assert

assert有什麼作用:
     斷言作爲一種軟件調試方法,提供了一種在diamante中進行正確性檢查的機制。 assert的作用:      對一個boolean表達式進行檢查,一個正確運行的程序保證boolean值爲true,若爲false,則說明程序不正確,系統需要提供警告信息並且退出程序。
assert包括兩種表達式:
     assert expression1
     assert expression1:expression2

其中expression1表示一個boolean表達式,expression2表示一個基本類型或者一個對象
開啓斷言功能(默認斷言關閉):
     java -ea TestAssert(ea:enable和assertions的縮寫)
     java -enableassertions TestAssert
下面讓我們來舉個栗子熟悉一下assert:
assert 1+1==2;
System.out.println("assert1 ok");
assert 1+1==3:"assert faild out";
System.out.println("assert 2 ok");

對於上述代碼,當程序執行javac Test.java 與java Test:

運行結果:
assert1 ok
assert2 ok
/*未開啓斷言時,程序無需判斷1+1==2,也無需判斷1+1==3是對是錯,只需要按照一般流程走,
所以程序輸出如上結果*/

對於上述代碼,當程序執行javac Test.java 與java -ea Test  (開啓):

assert1 ok
Exception in thread "main" Java.Lang.AssertionError:assert faild exit
at Test.main(Test.java5);
/*開啓斷言之後,程序判斷boolean表達式的值是否爲true,如果爲true,則繼續執行,
如果爲false,系統需要提供警告信息並且退出程序,所以當判斷1+!=3時,表達式的值爲false,
程序提供異常信息並且退出,如上結果所示。*/
由此我們也可以看出來:
(1):java是在運行開啓assert.(區別於C語言編譯期間開啓)
(2):java使用assert關鍵字來實現其功能。(區別於C語言的庫函數)
並且,雖然assert的功能與if判斷類似,但是二者存在本質性的區別:assert一般用於調試程序,如果不小心用它來控制流程的業務流程,那在調試之後去掉assert就意味着修改了程序的正常邏輯,而if隨機邏輯判斷,本身就是用來控制程序流程的

assert的應用範圍:
(1):檢查控制流
(2):檢查輸入參數是否有效
(3):檢查函數結果是否有效
(4):檢查程序不變量
在實際的開發中,assert用來保證程序的正確性,通常開發和測試使用,爲了提高效率,軟件發佈後,assert默認關閉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章