Eclipse的使用技術
工欲善其事,必先利其器
MyEclipse和Eclipse的區別
MyEclipse是Eclipse的插件,我們先安裝上Eclipse,而MyEclipse就是在Eclipse基礎上加一個插件,擴展了
Eclipse的功能,讓它可以開發J2EE的程序,就是WEB項目。每次我們都要下載Eclipse,安裝Eclipse,再下載
MyEclipse插件再安裝MyEclipse插件,於是MyEclipse廠商想到能不能把它們打包成一體化?你下載一個東西,
打包的工具,下載下來再安裝,就連Eclipse以及MyEclipse插件都安裝好了,就免得你再分步驟安裝了。
Workspace與project-工作空間與工程
一個Workspace可以包含多個project,一個workspace保留了eclipse的一套環境選項的配置,例如,所使用的
javac和java命令,等等。細節查看window-->Preferences。如果要爲eclipse再配製一套環境選項,可以再創
建一個workspace。Package explorer視圖窗口中的files菜單項。
IDE開發工具都支持使用工程化方式管理一個項目的程序開發過程,一般來說一個相對獨立的項目就是一個工程,
一個項目中涉及的多個java文件,資源文件等用一個工程進行管理。
Perspective與View-透視圖和視圖
一個Perspective代表了若干個view的集合,如何顯示各種view。
設置單個工程的javac與java
|--高版本的java能否運行低版本的javac編譯程序?能
|--低版本的java能否運行高版本的javac編譯程序?不能
工作空間設置:
編譯版本的設置:window -- Preferences -- java -- Compiler
運行版本的設置:window -- Preferences -- java -- Installed JREs
單個工程:
編譯版本的設置:右擊工程 -- Properties -- java Compiler
運行版本的設置:右擊工程 -- Run As -- Run Configurations -- JRE
多想一想:
eclipse工作空間中的所有工程繼承工作空間的配置,其中某個工程也可以
覆蓋工作空間的配置!這是不是java面向對象的思想啊?
代碼模板
添加新模板
window -- Preferences -- Java -- Editor -- Content Assist -- Templates -- New
原來的內容:line_selection
光標位置:cursor
使用模板
選中內容 -- 右擊 -- Surround With -- 模板
知識點加強-JDK1.5新特性
1.靜態導入
import語句可以導入一個類或某個包中的所有類
import static語句導入一個類中的某個靜態方法或所有靜態方法
語法舉例:
import static java.lang.Math.sin;
import static java.lang.Math.*;
2.可變參數
可變參數的特點:
只能出現在參數列表的最後
...位於變量類型和變量名之間,前後有無空格都可以;
調用可變參數的方法時,編譯器爲該可變參數隱含創建
一個數組,在方法體中以數組的形式訪問可變參數。
例:
public static void main(String[] args) {
System.out.println(add(1,2));
System.out.println(add(2,3,4));
}
public static int add(int x,int ... args) {
int sum = x;
for(int i = 0; i < args.length; i++) {
sum += args[i];
}
return sum;
}
增強for循環
語法:
for(type 變量名:集合變量名)
{...}
迭代,如上面add方法for循環:
for(int arg : args){
sum += arg;
}
注意:
迭代變量必須在()中定義!
集合變量可以是數組或實現了Iterable接口的集合類
基本數據類型的自動拆箱與裝箱
Inter num1 = 12;
裝箱:自動把一個基本數據類型裝成了Integer對象,再賦給了引用變量。
System.out.println(num1 + 3);
拆箱:把一個引用類型變量拆箱成一個基本類型數據。
Integer i1 = 5;
Integer i2 = 5;
System.out.println(i1 == i2);//true
Integer i1 = 136;
Integer i2 = 136;
System.out.println(i1 == i2);//false
byte常量池
對於這些基本數據整數要裝箱成Integer對象的時候,如果這
個數據在1字節(-128 ~ 127)的數字,就緩存起來,在一個池
裏,叫byte常量池,如果把一個整數裝成Integer對象,是一
個字節以內的話,先看池子裏面有沒有,如果有直接從池子裏
面拿來個。這樣節省了內存空間。
這是一種設計模式
叫做享元模式。(flyweight)
什麼叫享模式:
就是有很多個小的對象,他們有很多屬性相同,把他們
變成一個對象,那些不同的屬性,把它們變爲方法的參數,
稱之爲外部狀態,那些相同的屬性的稱之爲這個對象的內部
狀態。
應用:
1.word中輸入英文字母,可創建26對象,每個對象值是出現的位置不同(座標),所以可用一個對象調用位置的方法:
如,字母i:i.display(intx,int y),將高度重複使用的char類型的字母i封裝成一個對象使用。
2.圖標:window下的文件夾圖標,只喲名稱這個屬性不同,包含了很多其他相同的屬性,那麼可以應用享元模式。
枚舉(1.5新特性)
1.通過enum定義枚舉類,在其中列出所有同類的元素常量值作爲子類的實例對象使用。枚舉類是一個特殊的類,
每個元素都是該類的一個實例對象。
2.用枚舉類規定值,WeekDay類。以後用此類型定義的值只能是這個類中規定好的那些值,若不是這些值,編譯器不會通過。
3.如果調用者想打印枚舉類中元素的信息,需由編寫此類的人定義toString方法。
4.採用抽象方法定義的nextDay可將大量的if else語句轉換成了一個個獨立的類。
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";
}
}
好處:在編譯時期就會發現錯誤,表明值不符合,減少了運行時期的錯誤。
枚舉類
是一個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.構造器只是在構造枚舉值的時候被調用。
2.構造器只有私有private,絕不允許有public構造器。這樣可以保證外部代碼無法重新構造枚舉類的實例,這樣是合情合理的,因爲枚舉值是public static final的常量,但是枚舉類的方法和數據域是可以被外部訪問的。
3.構造器可以有多個,調用哪個即初始化相應的值。
所有的枚舉類都繼承了Enum方法,方法如下:
1.toString() ---> 返回枚舉量的名稱
2.ordina() ---> 返回枚舉值在枚舉類中的順序,按定義的順序排
3.getClass() ---> 獲取對應的類名
靜態方法:
1.valueOf(String e) ---> 轉爲類中對應的對象,即將字符串轉爲對象
2.values() ---> 獲取數組,將元素放入一個數組中。
注意:
1.元素列表即所有的元素項目,必須放在整個類的最前面。
2.元素列表後要有分號
3.枚舉類中的方法爲private
4.在元素後跟上(),就可指定要使用的構造方法,含參數。
5:枚舉類中的每個元素都是它的一個子類對象,當枚舉類中存在abstract方法,須在子類後加{},並在其中實現此方法。
總結:
1.匿名內部類比較常用
2.類的方法返回的類型可以是類的類型
3.類中可定義靜態常量,常量的結果就是自己這個類型的實例對象
4.如果枚舉只有一個成員,就可以作爲一種單利的實現方式,對象只有一個。