JAVA进阶教学之(Enum枚举类)
首先,我們?yōu)槭裁匆獙W(xué)習(xí)Enum枚舉類
我們引入一段代碼:
package com.lbj.javase.enumTest;public class EnumTest01 {public static void main(String[] args) {int retValue=divide(10,2);System.out.println(retValue);int retValue2=divide(10,0);System.out.println(retValue2);}/**** @param a 除數(shù)* @param b 被除數(shù)* @return 如果返回值是1表成功,是0表失敗*/public static int divide(int a,int b){try{int c = a/b;return 1;}catch (Exception e){return 0;}} }觀察代碼我們得知(設(shè)計缺陷):
? ? public static int divide(int a,int b){
? ? ? ? try{
? ? ? ? ? ? int c = a/b;
//當(dāng)我們不小心寫成了返回值=10,實際上已經(jīng)出錯了,但是編譯器沒有檢查出來
? ? ? ? ? ? return 10;
? ? ? ? }catch (Exception e){
? ? ? ? ? ? return 0;
? ? ? ? }
? ? }
?
這段代碼中的返回值 return中的數(shù)值是1,但是程序猿很容易手賤寫多或者寫少
提出:
我們追求的是:所有的錯誤盡可能讓編譯器找出來,所有的錯誤越早發(fā)現(xiàn)越好
?
?
解決:
改進(jìn)后的代碼
(根據(jù)需求,我們確定好了是只要返回的兩個可以判斷執(zhí)行與不執(zhí)行,因此我們可以換成布爾類型的數(shù)據(jù),這樣就不會像上面出現(xiàn)的在編譯的時候找不出錯誤,實際上運行時是錯誤的程序)
package com.lbj.javase.enumTest;public class EnumTest01 {public static void main(String[] args) {boolean retValue=divide(10,2);System.out.println(retValue);boolean retValue2=divide(10,0);System.out.println(retValue2);}/**** @param a 除數(shù)* @param b 被除數(shù)* @return 如果返回值是true表成功,是false表失敗*/public static boolean divide(int a,int b){try{int c = a/b;return true;}catch (Exception e){return false;}} }?
思考:
以上第二種的方法設(shè)計沒有什么問題,返回true和false表示兩種情況,但是在以后的開發(fā)中,有可能遇到一個方法的返回執(zhí)行結(jié)果包括3種情況,4種情況,5種情況不等。
但是每一個都是可以數(shù)清楚的,一枚接著一枚都是可以列舉出來的,這時候布爾類型就無法滿足需求了,此時就需要使用到枚舉類型
?
關(guān)于枚舉的代碼演示:
注意:此時的返回值類型已經(jīng)變成枚舉型的類名,這就是和上面失敗的int類型返回值的一個對比
package com.lbj.javase.enumTest;public class EnumTest02 {public static void main(String[] args) {Result result=divide(10,2);System.out.println(result);}public static Result divide(int a, int b){try{int c=a/b;return Result.SUCCESS;}catch (Exception e){return Result.FA;}} } //枚舉:一枚一枚可以列舉出來,才建議使用枚舉類型 //枚舉編譯之后也是生成class文件,因為它也屬于引用數(shù)據(jù)類型 //枚舉中的每一個值可以看成是常量 enum Result{//SUCCESS 是枚舉Result類型中的一個值//FA 是枚舉Result類型中的一個值//枚舉中的每一個值都可以看做是常量SUCCESS,FA }?
總結(jié):
1、枚舉是一種引用數(shù)據(jù)類型,由SUN公司以及封裝好成為一個類
2、枚舉類型怎么定義?語法:
enum 枚舉類型名{
? ? ?枚舉值1,枚舉值2
}
3、結(jié)果只有兩種情況的,建議用布爾類型
4、結(jié)果超過兩種情況且可以一枚一枚列舉出來的,建議用枚舉類型
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的JAVA进阶教学之(Enum枚举类)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: manifest php,Laravel
- 下一篇: 拦截游戏窗口被移动_「维维足球pro-教