黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java常量定義方法

Java常量定義方法

更新時間:2022-04-01 10:24:20 來源:動力節點 瀏覽1703次

圍繞Java常量這個話題似乎有很多困惑。有些人使用整數或字符串來定義常量,而另一些人則使用枚舉。

在本文中,我們將了解在 Java 中存儲常量的兩種最常見的策略: 整數和枚舉。

首先,當您決定使用常量時,您應該非常確定常量不會隨著時間而改變,這樣您就可以避免重新編譯。

在本文中,我們將使用一個非常常見的常量候選者——工作日!

假設我們有一個類表示在線商店中的訂單,我們希望在其中跟蹤訂單發生在一周中的哪一天。

我們的類看起來像這樣:

公共 類 訂單{
    私人[數據類型] weekDay ;
    公共[數據類型] getWeekDay () {
        返回 工作日;
    }
    公共 無效 setWeekDay ([數據類型] weekDay ) {
        這個。星期天 = 星期天;
    }
}

請注意,該類暫時不會編譯 - [datatype] 只是我們將使用的常量類型的占位符。

用整數定義常量

在 Java 中定義常量的最常見方法之一是通過整數,其中整數變量是靜態的。

公共 靜態 int 星期一 =  0 ;
公共 靜態 int 星期二 =  1 ;
公共 靜態 int 星期三 =  2 ;
公共 靜態 int 星期四 =  3 ;
公共 靜態 int  FRIDAY  =  4 ;
公共 靜態 int 星期六 =  5 ;
公共 靜態 int  SUNDAY  =  6 ;

定義整數常量時要問的第一個問題是放置它們的位置。我們是否將它們直接放在課堂上?還是我們給他們自己的課? Order

由于日子非常普遍,而且不一定只與 type 的對象相關 Order,我們將在它們自己的 class 中定義它們。 WeekDay

公共 課 工作日{
    私人 工作日(){}
???    公共 靜態 int 星期一 =  0 ;
    公共 靜態 int 星期二 =  1 ;
    公共 靜態 int 星期三 =  2 ;
    公共 靜態 int 星期四 =  3 ;
    公共 靜態 int  FRIDAY  =  4 ;
    公共 靜態 int 星期六 =  5 ;
    公共 靜態 int  SUNDAY  =  6 ;
}

您可能注意到了私有構造函數——這是為了避免客戶端實例化該類。該類僅包含與對象無關的靜態變量,因此無需實例化該類。

現在,每當我們需要為訂單設置特定日期時,我們都會這樣做:

訂單 order  =  new  Order ();
訂購。setWeekDay ( WeekDay . MONDAY );

而當我們想檢查訂單是否發生在星期五時,我們可以簡單地調用 write:

if(order.getWeekDay() == WeekDay.FRIDAY)

到目前為止,一切都很好。這樣的設計肯定不會有問題吧?

好吧,讓我們假設您在一年后回到此代碼 - 您必須檢查訂單是否發生在星期一。

哦,當然——你已經完全忘記了 WeekDay 課程......

在這種情況下,你可以嘗試這樣的事情:

if(order.getWeekDay() == 1)

在那一刻,完全忘記了 WeekDay 類,這段代碼非常有意義。星期一是一周的第一天,所以工作日應該是 1,對吧?

但是不,不是,因為靜態 int 變量 Monday在我們的 類中被定義為0WeekDay !

這是一個很好的例子,說明了為什么您應該考慮避免 使用整數常量。它們容易出錯、令人困惑且難以調試。

用枚舉定義常量

在 Java 中定義常量的另一種方法是使用enums。

使用枚舉時,我們的常量類將如下所示:

公共 枚舉 WeekDay {
    星期一,
    星期二,
    星期三,
    星期四,
    星期五,
    星期六,
    星期日
}

注意沒有私有構造函數——程序員(你!)不需要強制類是不可實例化的,因為默認情況下枚舉是不可實例化的!

將 a 設置為順序的語法 WeekDay 與整數常量完全相同:

order.setWeekDay(WeekDay.MONDAY);

我們如何處理訂單是否在星期五處理也沒有區別:

if(order.getWeekDay() == WeekDay.FRIDAY)

但是,主要區別在于這是您可以設置和比較 Order 類中 weekday 變量值的唯一方法。

兩者 order.setWeekDay(1); 和 if(order.getWeekDay() == 1) 都會使編譯器拋出一個錯誤,因為你試圖使用整數類型的變量,而它們應該是! WeekDay

使用Java枚舉,這不再是問題。如果您嘗試使用整數而不是 WeekDay 枚舉成員,編譯器將簡單地拋出一個錯誤,告訴您需要使用 WeekDay 枚舉。

換句話說,唯一能幫助您檢查訂單是否發生在星期五的是:

if(order.getWeekDay == WeekDay.FRIDAY)

沒有比這更清楚的了!

您不再需要記住常量類,并且如果有任何客戶使用您的代碼,他們不必懷疑星期一實際上是由 0 還是 1 表示的。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 成人宗合网 | 亚洲一区不卡 | 极品美女aⅴ高清在线观看 极品美女丝袜被的网站 | 狠狠干五月 | 色综合天天综合网国产成人 | 亚洲国产精品高清在线一区 | 日本大蕉香蕉大视频在线观看 | 茄子视频黄 | 黄色的视频免费观看 | 福利800av视频导航 | 免费在线观看黄色网址 | 日本r级在线观看播放 | 狠狠干狠狠操 | 久久蝌蚪 | 免费一极毛片 | 在线不卡国产 | 欧美视频导航 | 日韩免费在线播放 | 在线观看黄的网站 | 妞干网免费在线观看 | 免费一级毛片在线播放 | 亚洲日本一区二区三区高清在线 | 精品亚洲欧美中文字幕在线看 | 成人小视频在线观看 | 97国产精品国产品国语字幕 | 久久亚洲国产成人亚 | 日本一区深夜影院深a | 久久精品成人欧美大片免费 | 成人无遮挡免费网站视频在线观看 | 亚洲成人中文字幕 | 日本aⅴ在线| 亚洲欧美18v中文字幕高清 | 国产 日韩 欧美 在线 | 欧美性受xxxx喷水性欧洲 | 在线一区免费播放 | 日韩欧美国产一区二区三区 | 亚洲欧美精品中文字幕 | 激情伊人 | 亚洲天堂免费在线视频 | 日韩大片高清播放器好 | 日b毛片|