黑馬程序員 高新技術---> eclipse開發工具、相關知識加強及枚舉類

-----------android培訓java培訓、java學習型技術博客、期待與您交流! ------------


第一節 eclipse開發工具簡述

一、概述:

1、eclipse是運行在java基礎上的工具。

2、名詞:

1)IDE:ItegrityDevelopment Enviroment,集成開發環境

2)JavaEE:javaEnterprise Edition:java企業版開發工具。

3)JMS:Java MessageService,Java消息服務,是一個Java平臺中關於面向消息中間件的API,用於在兩個應用程序間,或分佈式系統中,發送消息,進行異步通信。

4)JMX:Java ManagementExtensions,Java管理擴展;是一個爲應用程序、設備、系統植入管理功能的框架。

5)JNDI:Java Nameingand Directory Interface:Java命名和目錄接口。

6)JDBC:Java DataBase Connectivity:Java數據庫連接。

3、Myeclipse和eclipse的區別:

1)Myeclipse:是elipse的插件,用於開發javaEE的平臺,爲其打補丁,擴展其功能,可以開發JavaEE程序即web項目,但是現在Myeclipse也集成了eclipse的功能,可直接使用Myeclipse。

2)eclipse:是開發java的一款專業的IDE(集成開發環境),以前需要Myeclipse才能開發JavaEE程序,現在的eclipse的版本也可以不用再安裝Myeclipse插件,直接可以開發JavaEE項目。

二、eclipse開發工具介紹:

1、project(工程):

1)一個工程包含有:包,jar包,資源文件,java源文件等內容。

2)將一個工程的所有源文件用一個工程來組織,開發工具能對所有源文件集中管理,記住每個源文件的位置和相互關係,配置信息等都在工程中有記錄。

2、preferences(首選項):

在workspace(工作間)中配置,將會影響到它下面所有的工程,一個工作間包含多個工程,不同透視圖就是幾個小窗口的集合。

3、在eclipse下如何查看變量值:

在變量處打個斷點--->Debug透視圖,調試運行--->選中變量,右鍵選watch(觀察),就可以看到了。

4、perspective(透視圖)和view(視圖)的關係:

view:每一個小窗口就是一個視圖。可通過window下的show view調出相應的視圖。

perspective:透視圖就是若干個小窗口的集合。

5、導入已有工程:

1)將其他工作間中的工程拷貝到當前工作間所在的文件夾下。

2)在eclipse中右擊工程--->導入--->瀏覽選擇當前工作間目錄下拷貝過來的工程。

6、配置JDK環境:

右擊工程--->BuildPath --->Libraries(庫)--->移除導入的工程的JDK庫,增加自己的庫。

注:

Add JARs是增加打個Jar包,

如果Jar包不在當前工程文件夾中,用Add Exernd JARs

如果Jar包在當前工程文件夾中,用Add JARs

增加一個庫相當於增加很多Jar,這是一個打包的過程。

 

第二節 知識點加強--->JDK1.5新特性

一、靜態導入 importstatic簡述:

1、import語句:是導入一個類或某個包中的所有類。

2、import static語句:導入一個類中的某個靜態方法或所有靜態方法。

二、增強for循環:

1、語法:for(type 變量名 : 集合變量名){statement}

2、注意:迭代變量必須定義在()中,集合變量可以使參數或實現Iterable接口的集合類,變量類型前可加修飾符,如final(可被局部內部類訪問到)。

三、可變參數:(方法的重載)

特點:

1、只能出現在參數列表的最後。

2、用…這三個點表示參數可以有很多,且這三個點位於變量類型和變量名之間,前後有無空格皆可。

3、調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。

示例:

public class VarableParameter {
	public static void main(String [] args){
		System.out.println(add(2, 3));
		System.out.println(add(2, 3, 5));
	}
	public static int add(int x,int... args){
		int sum = x;
		/*for(int i=0;i<args.length;i++){
			sum += args[i];
		}*/
		
		for(int arg : args){
			sum += arg;
		}
		return sum;
	}
}

四、基本數據類型的自動拆箱與裝箱:

1、自動裝箱:Integer iObj = 3;

2、自動拆箱:iObj + 2;

3、對於基本數據類型的說明:整數在-128 ~ 127之間的數,包裝成Integer類型對象,會存入常量池中的緩存,再創建同一個對象的時候,會直接使用前一個已有的值,因爲這些小數值使用的頻率很高,所以這些數值需要如此的使用以優化內存。

4、享元模式(flyweight):

1)概述:如果很多很小的對象,他們有很多相同的屬性,那麼就可變爲一個對象使用,這些屬性稱爲內部狀態,還有些不同的屬性,作爲方法參數植入,這些稱爲外部狀態。這種優化內存,只創建一個對象的模式,稱之爲享元模式。

2)應用:

(1)word中輸入英文字母,可創建26對象,每個對象值是出現的位置不同(座標),所以可用一個對象調用位置的方法:如,字母i:i.display(intx,int y),將高度重複使用的char類型的字母i封裝成一個對象使用。

(2)圖標:window下的文件夾圖標,只喲名稱這個屬性不同,包含了很多其他相同的屬性,那麼可以應用享元模式。

3)valueOf(int x):Integer中靜態方法,講一個整數轉換爲Integer,即把基本數據類型變爲包裝類。

 

第三節   枚舉類--->JDK1.5新特性

一、概述:

示例:

public abstract class WeekDayTest {
	public WeekDayTest(){}
	public final static WeekDayTest SUN = new WeekDayTest(){
		public WeekDayTest nextDay(){
			return MON;
	}};
	public final static WeekDayTest MON = new WeekDayTest(){
		public WeekDayTest nextDay() {
			return SUN;
	}};
	public abstract WeekDayTest nextDay();
	public String toString(){
		return this==SUN ? "SUN" : "MON";
	}}

1、通過enum定義枚舉類,在其中列出所有同類的元素常量值作爲子類的實例對象使用。枚舉類是一個特殊的類,每個元素都是該類的一個實例對象。

2、用枚舉類規定值,如上面的WeekDay類。以後用此類型定義的值只能是這個類中規定好的那些值,若不是這些值,編譯器不會通過。

3、好處:在編譯時期就會發現錯誤,表明值不符合,減少了運行時期的錯誤。

4、如果調用者想打印枚舉類中元素的信息,需由編寫此類的人定義toString方法。

5、採用抽象方法定義的nextDay可將大量的if else語句轉換成了一個個獨立的類。

6、如果想在一個類中編寫完每個枚舉類和測試調用類,那麼可將枚舉類定義成調用類的內部類。

枚舉類是一個class,而且是一個不可被繼承的final類,其中的元素都是類靜態常量。

二、枚舉的特徵及用法:

示例:

public class EnumText {
	public static void main(String[] args) {
		WeekDayTest weekDay = WeekDayTest.MON;	
		System.out.println(weekDay.nextDay());	
		
		WeekDay weekDay2 = WeekDay.FRI;
		System.out.println("獲取此對象:" + weekDay2);
		System.out.println("獲取對象名稱:" + weekDay2.name());
		System.out.println("獲取排行:" + weekDay2.ordinal());
		System.out.println("獲取類名:" + weekDay2.getClass());
		//靜態方法:
		System.out.println("通過字符串獲取對象:"+WeekDay.valueOf("SUN"));
		System.out.println("將元素存入數組:"+WeekDay.values().length);
		
	}
	//定義星期枚舉類
	public enum WeekDay{
		SUN(1),MON,TUE,WED,THI,FRI,SAT;
		private WeekDay(){
			System.out.println("first");
		}
		private WeekDay(int x){
			System.out.println("second");
		}
	}
	//定義交通燈
	public enum TrafficLamp{
		//定義3個元素,即此類的子類,覆寫抽象方法
		RED(30){
			public TrafficLamp nextLamp() {
				return GREEN;
		}},
		GREEN(45){
			public TrafficLamp nextLamp() {
				return YELLOW;
		}},
		YELLOW(5) {
			public TrafficLamp nextLamp() {
				return RED;
		}};
		private int time;
		//構造方法
		private TrafficLamp(int time){this.time = time;}
		//抽象方法,轉爲下個燈
		public abstract TrafficLamp nextLamp();
	}
}

1、構造器:

1)構造器只是在構造枚舉值的時候被調用。

2)構造器只有私有private,絕不允許有public構造器。這樣可以保證外部代碼無法重新構造枚舉類的實例,這樣是合情合理的,因爲枚舉值是public static final的常量,但是枚舉類的方法和數據域是可以被外部訪問的。

3)構造器可以有多個,調用哪個即初始化相應的值。

2、所有的枚舉類都繼承了Enum方法,方法如下:

1)toString() ---> 返回枚舉量的名稱

2)ordina() ---> 返回枚舉值在枚舉類中的順序,按定義的順序排

3)getClass() ---> 獲取對應的類名

靜態方法:

1)valueOf(String e) ---> 轉爲類中對應的對象,即將字符串轉爲對象

2)values() ---> 獲取數組,將元素放入一個數組中。

三、注意:

1、元素列表即所有的元素項目,必須放在整個類的最前面。

2、元素列表後要有分號

3、枚舉類中的方法爲private

4、在元素後跟上(),就可指定要使用的構造方法,含參數。

5、枚舉類中的每個元素都是它的一個子類對象,當枚舉類中存在abstract方法,須在子類後加{},並在其中實現此方法。

四、總結:

1、匿名內部類比較常用

2、類的方法返回的類型可以是類的類型

3、類中可定義靜態常量,常量的結果就是自己這個類型的實例對象

4、如果枚舉只有一個成員,就可以作爲一種單利的實現方式,對象只有一個。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章