天天看點

JAVA進階之旅(一)——增強for循環,基本資料類型的自動拆箱與裝箱,享元設計模式,枚舉的概述,枚舉的應用,枚舉的構造方法,枚舉的抽象方法JAVA進階之旅(一)——增強for循環,基本資料類型的自動拆箱與裝箱,享元設計模式,枚舉的概述,枚舉的應用,枚舉的構造方法,枚舉的抽象方法

學完我們的java之旅,其實收獲還是很多的,但是依然還有很多的知識點需要我們的突破,是以寫下這個java進階之旅的系列,這個系列不會說的那麼的基礎,主要是對一些進階點的功能進行剖析,是以,一起來看看吧!
for循環在我們的開發中是非常非常的多的,但是有多少人會用增強for循環?其實還是有很多人會用哈,但是還是有很多人一知半解,我們來看一下增強for循環的格式是怎樣的

文法

for(type 變量名:集合變量名){….}

注意事項

1.疊代變量必須在括号内定義

2.集合變量可以是數組或實作了iterable接口的集合類

我們寫一個小例子來檢視一下就知道了
輸出的結果也是總所周知,全部輸出來了,這裡就不示範了 ,這就是比較簡單的增強for循環了
這個基本資料類型的拆箱與裝箱是什麼呢?這樣,我們用思路來說明,我們看這段代碼
如果詳細分析的話,應該是把一個基本資料類型3裝箱成了Integer 指派給了num1,如果你使用過以前的JDK版本,具體是幾,好像是1.5還是1.6之前是會報錯的,再來看下拆箱,其實可以看一下這段代碼
Integer 和3相加,是等于6,在現在的JDK版本早就支援了自動拆箱和裝箱,是以我們現在隻要了解一下就好了,這裡要注意以下int範圍是-128–127,如果超過了就GG
同樣的,這裡會牽扯到一個設計模式,如果我們需要很多個對象,但是每一個對象的使用方法都是一樣的,資料也是一樣的,是以我們就沒必要建立這麼多,就建立一個就好了,可重複利用,這個就是享元設計模式了,是不是很簡單
說道枚舉,他是JDK1.5新增加的一個概念,其實作在開發用的相對還是比較少的, 但是你如果翻閱12年上下的代碼,你可以看到很多的枚舉的影子,他到底是什麼呢?我們來深入了解了解

1.我們為什麼要用枚舉

說道這個,我們先來看個例子,比如要定義星期幾或者性别的變量,我們該怎麼去定義?假設用1-7分别表示星期一到星期日,但是有人可能會寫成等于0去了 枚舉就是要讓某個類型的變量的取值隻能為若幹個固定值中的一個,否則,編譯器就會報錯,枚舉可以讓編譯器在編譯時控制源程式中填寫的非法值,普通變量的方式在開發階段無法實作的這一目标

2.用普通類如何實作枚舉功能

我們可以模拟一下試試看,需要做的事情有 私有的構造方法 每個元素分别用一個公有的靜态變量表示 可以有若幹公有方法或抽象方法 我們先用基本的JAVA類來示範一下枚舉的作用
這個是我們用普通的方式來實作枚舉的思想,這也是可以的,但是我們JAVA中提供了枚舉的應用姿勢:
其實但從枚舉來說,使用起來還是比較簡單的,我們來看下是什麼?
這樣我們就可以直接使用,并且輸出的時候可以直接實作列印值的功能,就像上述我們JAVA類的功能一樣
我們更進一步的來示範一下其他使用方法
這段看起來應該并不困難,主要是了解構造函數的規律和什麼時候調用,注意一下就好了
我們繼續來看,看下抽象函數的使用方法,我們現在假設路上的紅綠燈,我們應該怎麼去寫?
實作起來還是有點涵養的對吧,其實思想很通順,我們有三個燈,他都有顯示下一個燈的功能,是以可以直接抽象,而且他有是都需要顯示時間,是以,我們可以寫一個有參的構造函數,就ok了 對了

枚舉隻有一個成員時,就可以作為一種單利的實作方式

我們本章就先到這裡吧,這篇隻能算是隻是一個基礎概念,為我們後面做鋪墊,我們下篇會涉及到一些深一點的東西,比如反射的機制等 有興趣的可以加群:555974449我們一起學習