詳談Java枚舉、靜態(tài)導(dǎo)入、自動拆裝箱、增強(qiáng)for循環(huán)、可變參數(shù)
一、枚舉簡介
1、什么是枚舉?
需要在一定范圍內(nèi)取值,這個(gè)值只能是這個(gè)范圍內(nèi)中的任意一個(gè)
現(xiàn)實(shí)場景:交通信號燈,有三種顏色,但是每次只能亮三種顏色里面的任意一個(gè)
2、使用一個(gè)關(guān)鍵字 enum
enum Color3 { RED,GREEN,YELLOW; }
*枚舉的構(gòu)造方法也是私有化的
*特殊枚舉的操作
**在枚舉類里面有構(gòu)造方法
**在構(gòu)造方法里面有參數(shù),需要在每個(gè)實(shí)例上都寫參數(shù)
**在枚舉類里面有抽象方法
**在枚舉的每個(gè)實(shí)例里面都重寫這個(gè)抽象方法
3、枚舉的api的操作
**name():返回枚舉的名稱
**ordinal():枚舉的下標(biāo)
**valueof(Class<T> enumType,String name):得到枚舉的對象
**還有兩個(gè)方法,不在api文檔里,編譯自動生成
***valueof(String name) 轉(zhuǎn)換枚舉對象
***values() 獲得所有枚舉對象數(shù)組
//知道枚舉的對象,得到枚舉名稱和下標(biāo)
@Test
public void test1() {
//得到枚舉對象
Color100 c100 = Color100.RED;
//得到枚舉名稱
String name = c100.name();
//得到枚舉的下標(biāo)
int idx = c100.ordinal();
System.out.println(name+":"+idx);
}
//知道枚舉的名稱,得到枚舉的對象和下標(biāo)
@Test
public void test2() {
String name1 = "GREEN";
//得到對象
Color100 c1 = Color100.valueOf(name1);
//得到枚舉下標(biāo)
int idx1 = c1.ordinal();
System.out.println(idx1);
}
//知道枚舉的下標(biāo),得到枚舉的對象和名稱
@Test
public void test3() {
int idx2 = 2;
//得到枚舉對象
Color100[] cs = Color100.values();
//根據(jù)下標(biāo)得到對象
Color100 c12 = cs[idx2];
//得到枚舉的名稱
String name2 = c12.name();
System.out.println(name2);
}
二、靜態(tài)導(dǎo)入
*可以在代碼里面,直接使用靜態(tài)導(dǎo)入方式,導(dǎo)入靜態(tài)方法或者常量
*import static XX.XX.xxx
*import static java.lang.System.out;
比如實(shí)現(xiàn)一個(gè)計(jì)算器,在Math類里面
三、自動拆裝箱
*裝箱
**把基本的數(shù)據(jù)類型裝換成包裝類
*拆箱
**把包裝類轉(zhuǎn)換成基本數(shù)據(jù)類型
** //自動裝箱
Integer i = 10;
//自動拆箱
int m = i ;
** 在jdk1.4里面如何實(shí)現(xiàn)裝箱和拆箱
public void test1() {
//裝箱
Integer m = new Integer(10);
//拆箱
int a = m.intValue();
}
**jdk是向下兼容
-比如在jdk1.4里寫的代碼,到5.0里面也可以運(yùn)行
四、增強(qiáng)for循環(huán)
*語法 for(遍歷出來的值:要遍歷的集合){}
-for(String s : list){ System.out.println(s) }
*使用場景:數(shù)組;實(shí)現(xiàn)Iterator接口的集合,可以使用增強(qiáng)for循環(huán)
*在集合上使用增強(qiáng)for循環(huán)遍歷
list set 實(shí)現(xiàn)了Iterator接口,所以可以使用增強(qiáng)for循環(huán)
map不能使用增強(qiáng)for循環(huán),沒有實(shí)現(xiàn)Iterator接口,所以不能使用增強(qiáng)for循環(huán)
*增強(qiáng)for循環(huán)出現(xiàn)目的:為了替代迭代器
**增強(qiáng)for循環(huán)底層就是迭代器實(shí)現(xiàn)的。
五、可變參數(shù)
可變參數(shù)應(yīng)用場景:實(shí)現(xiàn)兩個(gè)數(shù)的相加,實(shí)現(xiàn)三個(gè)數(shù)的相加,四個(gè)數(shù)的相加
-如果實(shí)現(xiàn)多個(gè)方法,這些方法里邏輯基本相同,唯一不同的是傳遞的參數(shù)的個(gè)數(shù),可以使用可變參數(shù)
可變參數(shù)的定義方法:數(shù)據(jù)類型...數(shù)組的名稱
理解為一個(gè)數(shù)組,這個(gè)數(shù)組存儲傳遞過來的參數(shù)
public static void add(int ...nums) {
//nums理解為一個(gè)數(shù)組,這個(gè)數(shù)組存儲傳遞過來的參數(shù)
int sum= 0;
//遍歷數(shù)組,實(shí)現(xiàn)參數(shù)相加
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}
System.out.println(sum);
}
注意:
(1)可變參數(shù)需要寫在方法的參數(shù)列表中,不能單獨(dú)定義
(2)在方法的參數(shù)列表中只能有一個(gè)可變參數(shù)
(3)方法的參數(shù)列表中的可變參數(shù),必須放在參數(shù)最后 ,public void add(int a ,int...nums) {}
以上這篇詳談Java枚舉、靜態(tài)導(dǎo)入、自動拆裝箱、增強(qiáng)for循環(huán)、可變參數(shù)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Security系列教程之會話管理處理會話過期問題
會話過期,是指當(dāng)用戶登錄網(wǎng)站后,較長一段時(shí)間沒有與服務(wù)器進(jìn)行交互,將會導(dǎo)致服務(wù)器上的用戶會話數(shù)據(jù)(即session)被銷毀。這篇文章主要介紹了Spring Security系列教程之會話管理處理會話過期問題,需要的朋友可以參考下2021-10-10
解決SpringBoot文件上傳臨時(shí)目錄找不到的問題
這篇文章主要介紹了解決SpringBoot文件上傳臨時(shí)目錄找不到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot實(shí)現(xiàn)文件上傳并返回url鏈接的示例代碼
文件上傳,當(dāng)我們選擇了某一個(gè)圖片文件之后,這個(gè)文件就會上傳到服務(wù)器,從而完成文件上傳的操作,是指將本地圖片、視頻、音頻等文件上傳到服務(wù)器,供其他用戶瀏覽或下載的過程,本文給大家介紹了SpringBoot實(shí)現(xiàn)文件上傳并返回url鏈接,需要的朋友可以參考下2024-11-11
Java 關(guān)鍵字static詳解及實(shí)例代碼
這篇文章主要介紹了Java 關(guān)鍵字static詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04
java計(jì)算值所占的百分比,結(jié)果為100%問題
這篇文章主要介紹了java計(jì)算值所占的百分比,結(jié)果為100%問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

