『壹』 誰懂java幫我看下這段ea
貼出來 或者私信發給我。
『貳』 使用EA工具畫UML圖時(JAVA),生成的代碼中,總會自動生成finalize方法,如何才能取消生成這個方法
如果對整個編譯執行沒有影響,可以胡略,可以考慮後期優化的時候去除。
『叄』 java中斷言assert什麼意思
斷言一般用於程序不準備通過捕獲異常來處理的錯誤棗核陵。
對於斷言語句:assert num<=0;
如果表達式num<=0的值為真,程序繼續執行,否則程序立馬凳戚結束執行。
另外注意:調試程序的時候可以使用如下語句開啟斷言
java -ea 例子名稱
拒絕抄襲、氏攜拒絕復制,希望能幫到你!
『肆』 EA里如何體現 JAVA 繼承
1,java類可以一次繼承多個介面,用implements 介面1,介面2
2,如果是介面繼承介面的話也可以用extends,介面是多繼承的,java類才是單繼承
3,介面繼承介面可以不實現父介面中的方法,可以聲明自己的新方法,
4,類實現介面時,一定要實現介面中聲明的方法,如果介面中沒有定義抽象方法則不需要,但是要注意,類實現了一個介面A,如果B是A的宴友父介面,且B中有抽象方法,則該類必須實現A和B中的所有拍祥盯抽象方法
5,抽象方法只能定義在抽象類中,抽象類實現介面,可以不實現介面中的抽象方法
總結:其實你提的問題可以說不是問題,沒有可比性啊!繼承介面是說的介面來繼承介面,是介面與介面間的
實現介面是類實現介面,是java類與介面間的,根本沒什麼好比較的,就像重載和重寫一樣,一個類可以實現多個介面,一個介面可以繼承自多個介面,也可以被多襲和個介面繼承
『伍』 JAVA中的泛型用法一種: <T> 返回值用法。
1、對於泛型方法來說,是可以接收不同類型的參數,比如下圖,使用泛型來操作List集合,然後向List中添加一條數據,看是否可以添加成功,創建泛型方法如圖所示。
『陸』 用java開發的大型游戲有哪些
Java開發的大型游戲有:俄羅斯方塊、超級泡泡龍、貪吃蛇、鑽石情迷、祖瑪等。學習Java開發推薦千鋒教育,教育培訓業務分為大學生技能培訓和職後技能培訓;高校服務業務主要提供校企合作全解決方案與定製服務;企業服務業務主要為企業提供專業化綜合服務,值得信賴。
用java開發的大型游戲有以下幾個:
1、俄羅斯方塊(Tetris)
經典的益智游戲,幾乎是世界上最有影響力的益智游戲之一,游戲本身也很簡單,只要不斷消減掉落的方塊就可以了。這個游戲被模仿了很多個版本,我這里的是EA出的瘋狂俄羅斯方塊(Tetris Mania)。
2、超級泡泡龍(Super Bubble Bobble)
Taito公司開發的游戲,主角是兩只綠色和藍色的小恐龍,通過吐出泡泡來消減屏幕上的綵球,游戲本身簡單易學、妙趣橫生,女孩子玩起來會上癮的。
3、貪吃蛇(Retro Snaker)
諾基亞手機上的一個元老級游戲,這個游戲短小精悍,很具可玩性,特別適合在手機上玩。據稱,已經有超過十億人玩過這個游戲。
4、鑽石情迷(Bejeweled)
一個很好玩的益智游戲,有點像「對對碰」,游戲規則很簡單,移動相鄰的兩個鑽石,使任一排產生有三個或以上的相同鑽石,即消去,上面的鑽石靠重力落下。
5、祖瑪(Zuma)
一款休閑益智游戲,玩法很像QQ龍珠,將中間吐出來的珠子向著周圍連環滾出的同色珠子射打,夠三個就能炸裂消除,簡單有趣。
想要了解更多有關Java開發的相關信息,推薦咨詢千鋒教育。千鋒教育總部位於北京,目前已在20個城市成立分公司,現有教研講師團隊300餘人。公司目前已與國內20000餘家IT相關企業建立人才輸送合作關系,每年培養泛IT人才近2萬人,十年間累計培養超10餘萬泛IT人才,累計向互聯網輸出免費教學視頻950餘套,累積播放量超9800萬余次,實力強大,值得選擇。
『柒』 java 中assert的使用
一、assertion的意義和用法
J2SE 1.4在語言上提供了一個新特性,就是assertion功能,它是該版本在Java語言方面最大的革新。
從理論上來說,通過 assertion方式可以證明程序的正確性,但是這是一項相當復雜的工作,目前還沒有太多的實踐意義。
在實現中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經處於不正確的狀態下,系統將給出警告或退出。
一般來說,assertion用於保證程序最基本、關鍵的正確性。assertion檢查通常在開發和測試時開啟。為了提高性能,在軟體發布後,assertion檢查通常是關閉的。
1、語法表示
在語法上,為了支持assertion,Java增加了一個關鍵字assert。它包括兩種表達式,分別如下:
assert expression1;
assert expression1:expression2;
在兩種表達式中,expression1表示一個boolean表達式, expression2表示一個基本類型或者是一個對象(Object),基本類型包括boolean,char,double,float,int和 long。由於所有類都為Object的子類,因此這個參數可以用於所有對象。
2、含義
在運行時,如果關閉了assertion功能,這些語句將不起任何作用。如果打開了assertion功能,那麼expression1的值將被計算,如果它的值為false,該語句強拋出一個AssertionError對象。
如果assertion語句包括expression2參數,程序將計算出 expression2的結果,然後將這個結果作為AssertionError的構造函數的參數,來創建AssertionError對象,並拋出該對 象;如果expression1值為true,expression2將不被計算。
一種特殊情況是,如果在計算表達式時,表達式本身拋出Exception,那麼assert將停止運行,而拋出這個Exception。
3、編譯
由於assert是一個新關鍵字,使用老版本的JDK是無法編譯帶有assert的 源程序。因此,我們必須使用JDK1.4(或者更新)的Java編譯器,在使用Javac命令時,我們必須加上-source 1.4作為參數。-source 1.4表示使用JDK 1.4版本的方式來編譯源代碼,否則編譯就不能通過,因為預設的Javac編譯器使用JDK1.3的語法規則。
大家在使用eclipse,jbuilder等IDE工具的時候,要注意編譯器的版本,使用的jre,不等於是javac 的版本
一個簡單的例子如下:javac -source 1.4 AssertTest.java
4、運行
由於我們可以選擇開啟assertion功能,或者不開啟,另外我們還可以開啟一部 分類或包的assertion功能。通過這些選項,我們可以過濾所有我們不關心的類,只選擇我們關心的類或包來觀察。
參數 -esa 和 -dsa:
它們含義為開啟(關閉)系統類的assertion功能。由於新版本的Java的系統類中,也使了assertion語句,因此如果用戶需要觀察它們的運行情況,就需要打開系統類的assertion功能 ,我們可使用-esa參數打開,使用 -dsa參數關閉。
-esa和-dsa的全名為-enablesystemassertions和-disenablesystemassertions,全名和縮寫名有同樣的功能。
參數 -ea和-ea:
它們含義為開啟(關閉)用戶類的assertion功能:通過這個參數,用戶可以打 開某些類或包的assertion功能,同樣用戶也可以關閉某些類和包的assertion功能。打開assertion功能參數為-ea;如果不帶任何 參數,表示打開所有用戶類;如果帶有包名稱或者類名稱,表示打開這些類或包;如果包名稱後面跟有三個點,代表這個包及其子包;如果只有三個點,代表無名 包。關閉assertion功能參數為-da,使用方法與-ea類似。
-ea和-da的全名為-enableassertions和-disenableassertions,全名和縮寫名有同樣的功能。下面表示了參數及其含義。
參數 例子 說明
-ea java -ea 打開所有用戶類的assertion
-da java -da 關閉所有用戶類的assertion
-ea: java -ea:MyClass1 打開MyClass1的assertion
-da: java -da: MyClass1 關閉MyClass1的assertion
-ea: java -ea:pkg1 打開pkg1包的assertion
-da: java -da:pkg1 關閉pkg1包的assertion
-ea:... java -ea:... 打開預設包(無名包)的assertion
-da:... java -da:... 關閉預設包(無名包)的assertion
-ea:... java -ea:pkg1... 打開pkg1包和其子包的assertion
-da:... java -da:pkg1... 關閉pkg1包和其子包的assertion
-esa java -esa 打開系統類的assertion
-dsa java -dsa 關閉系統類的assertion
綜合使用 java -dsa:MyClass1:pkg1 關閉MyClass1和pkg1包的assertion
其中...代表,此包和其子包的含義。例如我們有兩個包為pkg1和pkg1.subpkg。
那麼pkg1...就代表pkg1和pkg1.subpkg兩個包。
另外,Java為了讓程序也能夠動態開啟和關閉某些類和包的assertion功能,Java修該了Class和ClassLoader的實現,增加了幾個用於操作assert的API。下面簡單說明一下幾個API的作用。
ClassLoader類中的幾個相關的API:
setDefaultAssertionStatus:
用於開啟/關閉assertion功能
setPackageAssertionStatus:
用於開啟/關閉某些包的assertion功能
setClassAssertionStatus:
用於開啟/關閉某些類的assertion功能
clearAssertionStatus:
用於關閉assertion功能
二、assertion的設計問題
首先,我們認為assertion是必要的。因為,如果沒有統一的assertion機制,Java程序通常使用if-then-else或者switch-case語句進行assertion檢查,而且檢查的數據類型也不完全相同。
assertion機制讓Java程序員用統一的方式處理assertion問題, 而不是按自己的方式處理。另外,如果用戶使用自己的方式進行檢查,那麼這些代碼在發布以後仍然將起作用,這可能會影響程序的性能。而從語言言層次支持 assertion功能,這將把assertion對性能帶來的負面影響降到最小。
Java是通過增強一個關鍵字assert實現支持assertion,而不是 使用一個庫函數支持,這說明Java認為assertion對於語言本身來說是非常重要的。C語言就是 通過Assert.h函數庫實現斷言的支持。
Java的assertion的開啟也和C語言不太一樣,我們都知道在C語言中,assertion的開啟是在編譯時候決定的。當我們使用debug方式編譯程序時候,assertion被開啟,而使用release方式編譯時候,assertion自動被關閉。
而Java的assertion卻是在運行的時候進行決定的。其實,這兩種方式是各有優缺點。如果採用編譯時決定方式,開發人員將處理兩種類型的目標碼,debug版本和release版本,這加大了文檔管理的難度,但是提高了代碼的運行效率。
Java採用運行時決定的方式,這樣所有的assertion信息將置於目標代碼 中,同一目標代碼可以選擇不同方式運行,增強目標代碼的靈活性,但是它將犧牲因為assertion而引起一部分性能損失。
另外,我們注意到AssertionError作為Error的一個子類,而不 是RuntimeException。Error代表一些異常的錯誤,通常是不可以恢復的,而 RuntimeException強調該錯誤在運行時才發生的特點。AssertionError通常為非常關鍵的錯誤,這些錯誤往往是不容易恢復的,而且assertion機制也不鼓勵程序員對這種錯誤進行恢復。
三、assertion與繼承
如果一個assert語句在父類,而當它的子類調用它時,該assert為false。父類的assert語句將只有在父類的assert開啟才起作用,如果僅僅開啟子類的assert,父類的assert仍然不運行。因此,assert語句不具有繼承功能。
四、assertion的使用
assertion的使用是一個復雜的問題,通常來說,assertion用於檢查一些關鍵的值,並且這些值對整個程序,或者局部功能的完成有很大的影響,並且這種錯誤不容易恢復的。
assertion表達式應該短小、易懂,如果需要評估復雜的表達式,應該使用函數計算。以下是一些使用assertion的情況的例子,這些方式可以讓java程序的可靠性更高。
檢查控制流; 在if-then-else和swith-case語句中,我們可以在不應該發生的控制支流上加上assert false語句。如果這種情況發生了,assert能夠檢查出來。
在私有函數計算前,檢查輸入參數是否有效;對於一私有些函數,要求輸入滿足一些特定的條件,那麼我們可以在函數開始處使用assert進行參數檢查。
對於公共函數,我們通常不使用assertion檢查,因為一般來說,公共函數必須對無效的參數進行檢查和處理。而私有函數往往是直接使用的。例如:某函數可能要求輸入的參數必須不為null。那麼我們可以在函數的一開始加上:
assert parameter1!=null : "paramerter is null in test method";
在函數計算後,檢查函數結果是否有效;對於一些計算函數,函數運行完成後,某些值需要保證一定的性質,因此我們可以通過assert檢查該值。例如,我們有一個計算絕對值的函數,那麼我們就可以在函數的結果處,加上一個語句:
assert value>=0:"Value should be bigger than 0:"+value;
通過這種方式,我們可以對函數計算完的結果進行檢查。檢查程序不變數;有些程序中,存在一些不變數,在程序的運行生命周期,這些不變數的值都是不變的。這些不變數可能是一個簡單表達式,也可能是一個復雜的表達式。
對於一些關鍵的不變數,我們可以通過assert進行檢查。例如,在一個財會系統中,公司的支出和收入必須保持一定的平衡關系,因此我們可以編寫一個表達式檢查這種平衡關系,如下表示:
private boolean isBalance() { …… }
在這個系統中,在一些可能影響這種平衡關系的方法的前後,我們都可以加上assert驗證:
assert isBalance():"balance is destoried";
五、補充
必須清楚AssertionError是繼承自Error得,因此你可以不再程序中catch它的,當然你也可以在程序中catch它然後程序可以繼續執行。
例如:
public class AssertTest
{
public static void main(String[] args)
{
AssertTest at = new AssertTest();
try
{
at.assertMe(true);
at.assertMe(false);
}
catch(AssertionError ae)
{
System.out.println("AsseriontError catched");
}
System.out.println("go on");
}
private void assertMe(boolean boo)
{
assert boo?true:false;
System.out.println("true condition");
}
}
Assert最好不要濫用,原因是assert並不一定都是enable的,下面兩種情況就不應該用assert
不要再public的方法裡面檢查參數是不是為null之類的操作
例如public int get(String s)
{
assert s != null;
}
如果需要檢查也最好通過if s = null 拋出NullPointerException來檢查
不要用assert來檢查方法操作的返回值來判斷方法操作的結果
例如 assert list.removeAll();這樣看起來好像沒有問題 但是想想如果assert 被disable呢,那樣他就不會被執行了 所以removeAll()操作就沒有被執行 可以這樣代替
boolean boo = list.removeAl();
assert boo;
『捌』 Java中斷言的用法
第一步:定義一個斷言,如:
int number=-28; assert (number>0):"負數不能搭或計算平方根";//此斷言是假的,所以會輸出後面伏枝內容,之後會報錯
第二步:在斷言的類中右擊選擇「Run As」,之後選擇」 Run Configuration「;
第三步:選擇 Arguments 選項卡;
第四步:在 VM arguments 文本框中輸入」 -ea「來運行斷言;
輸知廳伍出結果: