1. 程式人生 > >黑馬程式設計師_java高新技術--列舉

黑馬程式設計師_java高新技術--列舉

day01***Eclipse/列舉

*Workspaceproject    會切換工作間與匯入專案*Perspective(透檢視)viewwindows下有reset perspective重置透檢視*設定整個workspacejavacjava*設定單個工程的javacjava*快捷鍵的繫結與程式碼模組*利用快捷鍵提高工作效率    在應用中具體舉例講解。@@快捷鍵Ctrl+1        快速改正Alt+選中    看原始碼(沒有原始碼則貼上原始碼進去,資料夾-External Folder),(java)檔案-External File)Alt+/        聯想功能Alt+左右    看原始碼時的前後順序

Alt+上下    移動選中的程式碼ctrl+Alt+上下    複製選中的程式碼ctrl+T        檢視類的繼承關係f2        f2進入提示框,檢視方法的說明ctrl+shift+X/大寫    ctrl+shift+Y/小寫ctrl+shift+f 格式化format程式碼ctrl+shift+o 導包ctrl+shift+/ 加註釋ctrl+shift+\ 除註釋ctrl+shift+L    檢視所有快捷鍵ctrl+shift+T    直接看原始碼(自己輸入)Alt+shift+s 自動生成一些原始碼source選中程式碼Alt+shift+M ==> extract Method 
提取方法
@@斷點f5step into跳入f6step over跳過f7step return 跳回drop to fram :跳到當前方法的第一行resume:跳到下一個斷點(沒有下一個則執行完整個程式)watch:觀察變數或表示式的值斷點注意問題:1,斷點除錯完成後,要在breakpoints檢視中清除所有斷點2,斷點除錯完成後,一定記得結束執行斷點的JVM@@eclipse的使用技巧02 eclipceide開發工具的簡介myeclipseeclipse的外掛,使eclipse可以進行web專案開發現在myeclipse整合了eclipse,包含了eclipse工具。myeclipse是用
java開發的
程序中的javaw.exe 開啟的就是圖形化的java控制檯,而不像java.exe開啟的是dos命令列。專業術語(面試)java eeide--> Integrated Development Environment 整合開發環境jmsjmxjndi03 eclipse工程管理與快捷鍵配置。  window--preferences常用一個相對獨立的專案就是一個工程,一個工程中涉及的多個java檔案,資原始檔等用一個工程進行管理。   開發工具能對所有的原始檔集中管理,記住每個原始檔的位置和相互關係。   工程中有哪幾個原始檔,啟動類是哪個,啟動引數設定等配置資訊在工程中都記錄。   一個workspace可以包含多個project。如果要為eclipse再配置一套環境選項,可以再建立一個work是。資原始檔就是配置檔案。file--switch workspace 切換工作間一個工作間有自己的特色環境配置,其下的工程與工作間的環境配置一樣。java工程的包名 com.機構名.內容    name:類名(大寫)快捷鍵的使用技巧:General-keys,設定 Alt+/ 進行內容提示,要注意解除Alt+/ 原來的繫結關係。直接輸入alt+/    就可以找到它的繫結關係,刪除用 remove binding 04 透檢視 與程式除錯    透檢視:window --Show View     透檢視其實就是介面的佈局。不同的透檢視,包含不同的檢視(view),每個檢視的位置、大小也不同。    斷點    f5 :step into     f6: step over    f7: step return    除錯:雙擊設定斷點,右鍵 debug as ...開啟debug檢視 選中引數,右鍵watch    drop to frame: 跳到當前方法的第一行     resume: 跳到下一個斷點。(如果沒有下一個,則執行完整個程式)    watch:觀察變數或表示式的值    注意:    除錯完後,要在breakpoints檢視中清除所有斷點。    除錯完後,一定記得結束執行斷點的jvm05 編譯與執行環境    java--compiler 編譯時的環境    java--Installed JREs 執行時的環境    單獨工程 右鍵--Properties java Compiler編譯環境             --Run as --其它--JRE 檢視單獨一個工程的執行環境    高版本的java能否執行低版本的javac編譯的程式?能:1.6jrejava,能執行1.5javac編譯的程式。    低版本的java能否執行高版本的javac編譯的程式?不能:1.5jrejava,不能執行1.6編譯的程式。06 java模板程式碼 window--pre--java--Editor Templates    程式碼模組的設定java-editor-Templates,new    nametryf    patterntry{    line_selection選中的內容    }finally{    cursor游標    }   使用模板  選中程式碼 右鍵  Surround With 迴圈/try異常/同步...07 匯入已有的工程:    先將工程檔案拷貝到工作間下    然後file--import--general--Existig Projects Workspace--目錄   jre的庫設定   包和庫的設定  選中工程--右鍵--Build Path--其它--Libraries --Add Library(多個jar)--user Library--自己命名庫,增加多個jar08 @@靜態匯入(JDK1.5)與編譯器語法設定  import 匯入一個類或某個包中所有的類  import static 匯入一個類中的某個靜態方法或所有靜態方法。//import static java.lang.Math.max;import static java.lang.Math.*;  System.out.println(max(3, 6));可以省略類名  System.out.println(abs(3 - 6));09 @@可變引數與Overload面試題   可變引數的特點:    可變引數你就把它看成陣列    只能出現的引數列表的最後面;    ...位於變數型別和變數名之間,前後有無空格都可以    呼叫可變引數的方法,編譯器為該可變引數隱含建立一個數組,在方法體中以陣列的形式方法可變引數。    可以以陣列的形式來呼叫可變引數。public class VarableParameter {    public static void main(String[] args){        System.out.println(add(2,3,4));        System.out.println(add(1,2,3,4,5));    }    public static int add(int x,int...args){        int sum = x;        for(int i =0;i<args.length;i++){            sum += args[i];        }        return sum;    }}可變引數注意問題:        int nums[] = {1,2,3,5};        //把陣列當成一個物件放進了list中了        list = Arrays.asList(nums);        System.out.println(list);//列印[[[email protected]]地址值        Integer num[] = {1,2,3,5};        //把陣列中的每個元素都當成一個物件放進了list中了        list = Arrays.asList(num);        System.out.println(list);//列印[1, 2, 3, 5]overload過載 Vs override 覆蓋   override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。    在覆蓋要注意以下的幾點:    1、覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;    2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;    3、覆蓋的方法所丟擲的異常必須和被覆蓋方法的所丟擲的異常一致,或者是其子類;    4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。   overload對我們來說可能比較熟悉,可以翻譯為過載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入引數來區分這些方法,然後再呼叫時,VM就會根據不同的引數樣式,來選擇合適的方法執行。    在使用過載要注意以下的幾點:    1、在使用過載時只能通過不同的引數樣式。例如,不同的引數型別,不同的引數個數,不同的引數順序;    2、不能通過訪問許可權、返回型別、丟擲的異常進行過載;    3、方法的異常型別和數目不會對過載造成影響;    4、對於繼承來說,如果某一方法在父類中是訪問許可權是priavte,那麼就不能在子類對其進行過載,如果定義的話,也只是定義了一個新方法,而不會達到過載的效果。10 @@增強for迴圈    增強for迴圈注意問題:增強for只適合取資料,不能改變資料。    for(type 變數名 集合變數名){...}    注意:迭代變數必須在()中定義          集合變數可以是陣列或實現了Iterable介面的集合類。11 @@自動裝箱與拆箱(JDK1.5)Integer iObj = 3;//自動裝箱System.out.println(iObj + 12);//自動拆箱Integer i1 = 13;Integer i2 = 13;//在裝箱成Integer時,如果在-128~127;範圍內,就會快取以來。System.out.println(i1==i2);//tureInteger i3 = 134;Integer i4 = 134;//在裝箱成Integer時,如果超過-128~127;範圍,就不會快取以來。System.out.println(i3==i4);//false這是一種享元模式。flyweight(word中的字元,OS中的圖示。。。等)享元模式下:word文件中的每個字元26個字元提前例項化變成物件,word中的每個字元只是呼叫某個字元物件的方法,引數是座標。通過方法 i(int x,int y)//呼叫字元 的方法,引數是字元想要顯示的座標非享元模式下:每次寫下一個字元就是一次例項化,對每個字元進行例項化i(char ch,int x,int y)//大量的建立例項,浪費記憶體資源。Integer i5 = Integer.valueOf(127);Integer i6 = Integer.valueOf(127);System.out.println(i5==i6);//trueInteger i7 = Integer.valueOf(128);Integer i8 = Integer.valueOf(128);System.out.println(i7==i8);//false[email protected]@列舉為什麼要有列舉    問題:要定義星期幾或性別的變數,該怎麼定義?假設1-7分別表示星期一到星期七,但有人會寫 0    列舉就是要讓某個型別的變數的取值只能為若干個固定值中的一個,否則,編譯器就會報錯。    列舉可以讓編譯器在編譯時就可以控制程式中的非法值,普通變數的方式在開發階段無法實現這一功能。用普通類如何實現列舉功能,定義一個Weekday的類來模擬列舉功能    *私有的構造方法    *每個元素分別用一個公有的靜態成員變量表示    *可以有若干公有方法或抽象方法,要提供nextDay()方法必須是抽象的。列舉的基本應用    *舉例:定義一個WeekDay的列舉。    *擴充套件:列舉類的valuesvalueOfgetNametoStringordinal等方法    *總結:列舉是一個特殊的類,其中的每個元素都是該類的一個例項化物件。        例如可以呼叫WeekDay.SUN.getClass().getNameWeekDay.class.getName()列舉也可以實現介面、或者繼承抽象類。JDK5.0中擴充套件了switch語句,它除了接受intbytecharshort,還可以接受一個列舉型別。//測試列舉的常用方法        public void test2(){        System.out.println(Grand.C.name());//列舉常量的名字 C        System.out.println(Grand.C.ordinal());//列舉常量的序數 2        String str = "B";        //Grand g = Grand.valueOf(Grand.class, str);        Grand g = Grand.valueOf(str);    //開發中常用!        System.out.println(g);            //B        Grand gs[] = Grand.values();    //返回列舉類Grand中所有的列舉常量        for(Grand g1 : gs)            System.out.println(g1);        //A     B    C    D    E            }@@列舉入門    public static void main(String[] args) {        WeekDay weekDay2 = WeekDay.FRI;//該句話編譯時,會呼叫WeekDay的七個建構函式        System.out.println(weekDay2);FRI        System.out.println(weekDay2.name());//FRI        System.out.println(weekDay2.ordinal());//5 位置        System.out.println(weekDay2.toString());//FRI        System.out.println(weekDay2.getClass());//class cn.itcast.day1.EnumTest$WeekDay        System.out.println(WeekDay.valueOf("SUN").toString());//SUN        System.out.println(WeekDay.values().length);//7    }    //格式(1)最簡單    public enum WeekDay{        SUN,MON,TUE,WED,THU,FRI,SAT    }(2)帶構造方法的列舉,構造方法必須私有    public enum WeekDay{//相當於內部類        SUN(1),MON(),TUE,WED,THU,FRI,SAT;//必須放第一行        private WeekDay(){System.out.println("first");}        private WeekDay(int day){System.out.println("second");}    }(3)帶抽象方法的列舉    public enum TrafficLamp{        RED {//生成一個類檔案EnumTest$TrafficLamp$1.class            @Override            public TrafficLamp nextLamp() {                return GREEN;            }        },GREEN {//生成一個類檔案EnumTest$TrafficLamp$2.class            @Override            public TrafficLamp nextLamp() {                return YELLOW;            }        },YELLOW {//生成一個類檔案EnumTest$TrafficLamp$3.class            @Override            public TrafficLamp nextLamp() {                return RED;            }        };        public abstract TrafficLamp nextLamp();    }(4)帶構造方法和抽象方法的列舉    public enum TrafficLamp{        RED(30) {//生成一個類檔案EnumTest$TrafficLamp$1.class            @Override            public TrafficLamp nextLamp() {                return GREEN;            }        },GREEN (45){//生成一個類檔案EnumTest$TrafficLamp$2.class            @Override            public TrafficLamp nextLamp() {                return YELLOW;            }        },YELLOW (5){//生成一個類檔案EnumTest$TrafficLamp$3.class            @Override            public TrafficLamp nextLamp() {                return RED;            }        };        public abstract TrafficLamp nextLamp();        private int time;        private TrafficLamp(int time){this.time = time;}    }(5)帶構造方法和普通方法的列舉    public enum TrafficLamp{        RED(30) {//生成一個類檔案EnumTest$TrafficLamp$2.class            @Override            public TrafficLamp nextLamp() {                return GREEN;            }        },GREEN (45){//生成一個類檔案EnumTest$TrafficLamp$2.class            @Override            public TrafficLamp nextLamp() {                return YELLOW;            }        },YELLOW (5);//不生成類檔案        public  TrafficLamp nextLamp(){            return null;        }        private int time;        private TrafficLamp(int time){this.time = time;}    }*列舉就相當於一個類,其中也可以定義構造方法、成員變數、普通方法、抽象方法*列舉元素必須位於列舉體中的最開始部分,列舉元素列表的最後面有分號與其他成員隔開。    把列舉中的成員方法或變數等放在列舉前面,會編譯失敗。*帶構造方法的列舉    構造方法必須私有    可以有多個構造方法    列舉元素MONMON() 效果一樣,都是呼叫預設的構造方法。*帶方法的列舉    實現普通的方法    實現抽象的方法:每個元素分別是有列舉類的子類來生成的例項物件,這些子類採用類似內部類的方式進行定義。*列舉只有一個成員時,就可以作為一種單例的實現方式。

相關推薦

黑馬程式設計師_java高新技術--列舉

day01***Eclipse/列舉 *Workspace與project    會切換工作間與匯入專案*Perspective(透檢視)與viewwindows下有reset perspective重置透檢視*設定整個workspace的javac與java*設定單個工程

黑馬程式設計師_java高新技術 列舉

------- android培訓、java培訓、期待與您交流! ----------  1、列舉。     列舉就是要讓某個型別的變數的取值只能為若干個固定值中的一個,否則,編譯器就會報錯。列舉可以讓編譯器在編譯時就可以控制源程式中填寫的非法值,普通變數的方式在開發階段

黑馬程式設計師_java高新技術(1)列舉、反射、內省

------- android培訓、java培訓、期待與您交流! ---------- JDK 5.0 靜態匯入,自動裝箱拆箱,增強for迴圈, 可變引數,列舉,泛型,元資料 day01***Eclipse/列舉 *Workspace與project     會切換工作間與

黑馬程式設計師_java高新技術(2)列舉

列舉是一種特殊的JAVA類,用來定義有限的數量級 public enum TrafficSignal(){    STOP,CAUTION,GO } 每一個類都是其所在列舉的子類 使用方法 類名.常量名 當使用列舉常量時,JVM會自動建立該常量的例項 TrafficSignal signal=Traffic

黑馬程式設計師_java高新技術列舉

---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ----------------------   列舉: 關鍵字 enum 列舉就是要讓某個型別的變數的取值只能為若干固定值之中的一個。 是一個特殊的類,其中的每一個元素都是該類的一個物件。 注

黑馬程式設計師 Java高新技術---列舉

 ---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ---------------------- 列舉概念: 列舉實際上就是限制了一個類的物件產生範圍。 假如要定義一個Color類,用於上色,而顏

黑馬程式設計師_Java高新技術_反射

Field fieldX=pt1.getClass().getDeclaredField("x");//x是私有的不可見的用該方法獲得field物件 //暴力反射 fieldX.setAccessible(true);//因為x是私有的不可以直接訪問,設定為可訪問的成員方法的反射 Method 類代表某個類中

黑馬程式設計師_java高新技術之動態代理

                                 ----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! --------- 一.代理物件存在的價值:當.class檔案 被類載入器載入 到記憶體 形成Class物件

黑馬程式設計師_java高新技術(3)反射

反射就是JAVA類中各種成分對映成各種類 class.forName(“”)括號裡面填入類的具體路徑 反射的例項 public class ReflectTest{     public static void main(String[] args)    {     String str1=“abc”;

黑馬程式設計師_Java學習日記25_高新技術4

----------------------android培訓、java培訓、期待與您交流! --------------------- 泛型 1.入門泛型的基本應用 JDK1.5的集合類希望你在定義集合時,明確表示你要向集合中儲存哪種型別的資料,無法加入指定型別以外的

黑馬程式設計師--java高新技術 25--列舉,反射

---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ---------------------- /*1.5 新特性總結: 靜態匯入 可變引數 增強for(foreach) 基本資料的自動拆裝箱 列舉 泛

黑馬程式設計師——java高新技術列舉

------- android培訓、java培訓、期待與您交流! ---------- 列舉是java1.5版本的新特性。 1,列舉是什麼? 就是讓某個型別的變數的取值只能為若干個固定值中的一個。可以讓編譯器在編譯時就可控制,避免出錯。 2.列舉的應用 (1)定義列舉使用

黑馬程式設計師——Java高新技術列舉

-------android培訓、java培訓、期待與您交流! ---------- 列舉 列舉enum 列舉就是要讓某個型別的變數的取值,只能為若干個固定值中的一個,否則,編譯器報錯 列舉可以讓編譯器在編譯時就可以控制源程式中填寫的非法值,普通

黑馬程式設計師_Java學習日記2_面向物件總結1

----------------------android培訓、java培訓、期待與您交流! --------------------- 1.關於main函式的講解 主函式,是一個特殊的函式,作為程式的入口,可以被jvm呼叫。 主函式的定義: public:代表該函式的許

黑馬程式設計師_java複雜的流

---------------------- android培訓、java培訓、期待與您交流! ---------------------- java有一系列流型別,其數量超過60種,非常複雜 一、IO流的三種分類方式     1.按流的方向分為:輸入流和輸出流     2

黑馬程式設計師_java基礎——異常及遞迴

黑馬程式設計師------- android培訓、java培訓、期待與您交流! ---------- 1:異常 (1)程式出現的不正常情況。(2)異常的體系結構:Throwable:Error:是嚴重的問題。比如記憶體溢位等。要改程式碼。Exception:非Runt

黑馬程式設計師_java基礎加強學習筆記之註解

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">j

黑馬程式設計師-java高新技術(反射)

一、反射 1、定義: Java程式中的各個Java類屬於統一類事物,描述這類事物的Java類名就是Class。反射機制指的是程式在執行時能夠獲取自身的資訊。在java中,只要給定類的名字,那麼就可以通過反射機制來獲得類的所有資訊。 2、優點和缺

黑馬程式設計師_Java基礎(Java概述,關鍵字,識別符號,註釋,常量,變數

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! ------- 人生沒有選擇題,只有證明題,每天都在奮鬥的

黑馬程式設計師_Java學習筆記之7K面試題交通等管理系統

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">