-----------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、如果枚舉只有一個成員,就可以作爲一種單利的實現方式,對象只有一個。