什么是javaJava是美國sun公司,在1995年推出的高級編程語言。所謂的編程語言,是計算機語言,使用編程語言對計算機下達命令,完成人們所需要的功能。 1、 字節(jié)和DOS命令字節(jié):是計算機中最小的存儲單位。 1byte = 8 bit (1字節(jié) = 8 位) 2、 java開發(fā)環(huán)境JVM(java Vritual Machine):java虛擬機。 是虛擬的用于執(zhí)行bytecode字節(jié)碼的,虛擬計算機。 JRE(java Runtime Environment):java程序運行環(huán)境。 包含 JVM、運行程序必要的文件。 JDK(java Development Kit): 程序開發(fā)工具包。 包含JRE、編譯器、調(diào)試器等開發(fā)的工具。
運行程序,只需要安裝JRE就可以。 開發(fā)程序,一定要安裝JDK. 3、 標識符指程序中我們自己定義的內(nèi)容。如:類名,變量名等。 命名規(guī)則: 可以包含a-z(大小寫)、0-9、$、_(下劃線) 不能使用數(shù)字開頭 不能使用關(guān)鍵字。 有大駝峰式 (ByuhGin)和小駝峰式(byuhGin) 4、 常量就是在程序運行的過程中,不會改變的量。 5、 數(shù)據(jù)類型基本數(shù)據(jù)類型: (由小到大) 整形數(shù)據(jù) byte、short、int、long 浮點型 float、double 字符型 char 布爾型 Boolean 引用數(shù)據(jù)類型: 字符串、數(shù)組、類、接口、Lambda 6、數(shù)據(jù)轉(zhuǎn)換自動轉(zhuǎn)換: 由小賦值給大的 強制轉(zhuǎn)換: int sum = (int) 100L byte、short、char可以進行數(shù)學運算,都會先提升為int類型,再運算。 Boolean類型不能進行數(shù)據(jù)類型的轉(zhuǎn)換。 7、ASCLL碼表0 -----》 48, A ------》 65, a------》97 8、運算符簡單運算符: 、-、*、 /、 %、 賦值運算符: =、-=、*=、/=、%= 比較運算符:> 、<、 >=、 <=、 ==、 != 邏輯運算符:&&、||、 ! 三元運算符: 數(shù)據(jù)類型 名稱 = 判斷條件 ? 表達式A : 表達式 B; ?。ūWC: 1、 表達式A、B都需要滿足前面的數(shù)據(jù)類型。 2、 三元運算符的結(jié)果必須被使用。) 9、判斷語句注意的是,break和continue。 break是跳出當前內(nèi)容。 continue是跳出當前條。繼續(xù)執(zhí)行。 方法的重載方法是不能嵌套使用的。 重載(ovreload):就是多個方法的名稱一樣,但是參數(shù)列表不一樣。 ?。▍?shù)個數(shù)、參數(shù)類型、參數(shù)類型的順序)不一樣。 數(shù)組的幾種創(chuàng)建方法動態(tài)初始化數(shù)組: 數(shù)據(jù)類型[ ] 數(shù)組名稱 = new 數(shù)據(jù)類型[ 數(shù)組長度 ] ; 靜態(tài)初始化數(shù)組: 數(shù)據(jù)類型[ ] 數(shù)組名稱 = new 數(shù)據(jù)類型[ ] { 元素1,元素2 } ; 省略式: 數(shù)據(jù)類型[ ] 數(shù)組名稱 = { 元素1,元素2 }; 索引值從0開始,到 數(shù)組長度-1 為止。 集合ArrayListArrayList<E> 名稱 = new ArrayList<E>(); 注意:ArrayLiist的長度是可以隨意變化的, 泛型E,需要裝的是全部統(tǒng)一的泛型類型。 泛型只能是引用類型,不能是基本類型。 Map
Java內(nèi)存Java中的內(nèi)存分布1、棧(Stack):存放的都是方法的局部變量。方法的運行一定在棧中運行。 局部變量:方法的參數(shù),是方法{ } 中的局部變量 作用域:一旦超出作用域,立刻從棧內(nèi)存中消失。 2、堆(Heap):new出來的東西,都在堆里面。(.class相關(guān)的信息) 堆里面的東西都有一個地址值:16進制 3、方法區(qū)(Method Area):存儲.class的相關(guān)信息,包含方法的信息。 4、本地方法棧(Native Method Stack) 與操作系統(tǒng)相關(guān) 5、寄存器(pc Register) 與cpu相關(guān) 異常空指針異常:所有的引用類型都可以賦值一個null值, 數(shù)組必須要new初始化才能使用其中的元素。 如果在沒有new的情況下,給數(shù)組賦值了一個null。那么就會出現(xiàn)空指針異常。 空指針異常:NullPointerException 數(shù)組索引越界異常如果在訪問數(shù)組的時候,訪問的索引已經(jīng)超出了數(shù)組的索引值, 就會出現(xiàn)數(shù)組索引越界異常:ArrayListIndexOutOfBoundsException 成員變量和局部變量區(qū)別局部變量:在方法的內(nèi)部; 只有方法可以使用,外面不能使用 沒有默認值,如果要使用,側(cè)需要手動賦值。 位于棧內(nèi)存中。 隨著進棧產(chǎn)生,出棧消失。 成員變量在方法的外面 整個類都可以使用 如果沒有賦值,會有默認值 位于堆內(nèi)存中 隨著創(chuàng)建對象產(chǎn)生,對象被垃圾回收而消失。 Static的講解Static的使用使用static修飾成員方法,就成為了靜態(tài)方法。靜態(tài)方法不屬于對象。而是屬于類。 無論是成員變量、還是成員方法,使用了static修飾,都建議使用 類名稱點進行調(diào)用。 注意: 靜態(tài)不能直接訪問非靜態(tài) 靜態(tài)方法中,不能使用this。 靜態(tài)代碼塊Static{ 靜態(tài)內(nèi)容 } 靜態(tài)代碼塊,執(zhí)行唯一的一次。 靜態(tài)內(nèi)容總優(yōu)先于非靜態(tài)內(nèi)容。所以,靜態(tài)代碼塊比構(gòu)造方法先執(zhí)行。 Java的三大特征封裝就是將一些細節(jié)信息隱藏起來,不對外界開放。 方法就是一種封裝。 關(guān)鍵字Private 也是一種封裝 繼承使用extends 、implements 對父類進行繼承。 父類 (基類)、子類 (派生類) 繼承中的重寫就是和父類的方法名一樣,參數(shù)列表也是一樣。 @Override 驗證是不是有效的正確覆蓋重寫。 就算不寫,只要滿足要求,也是正確的方法覆蓋重寫了。 繼承中的構(gòu)造方法的訪問特點子類必須調(diào)用父類構(gòu)造方法,不寫側(cè)贈送一個super(); 寫了則用寫的指定的super調(diào)用,super只能有一個,還必須是第一個 Super的三個用法在子類的成員方法中,訪問父類的成員變量。 在子類的成員方法中,訪問父類的成員方法。 在子類的構(gòu)造方法中,訪問父類的構(gòu)造方法。 Super和this兩種構(gòu)造調(diào)用,不能同時使用。 多態(tài)就是父類引用指向子類對象。 格式:父類名稱 對象名 = new 子類名稱(); 或者 接口類名稱 對象名 = new 實現(xiàn)類名稱(); 多態(tài)中的方法的訪問,看new的是誰。就優(yōu)先用誰,沒有就向上找。 訪問: 成員變量:編譯看左,運行還是看左。 成員方法:編譯看左,運行看右。 向上向下轉(zhuǎn)型向上轉(zhuǎn)型:一定安全的,從小范圍轉(zhuǎn)向大范圍。 向下轉(zhuǎn)型: 范圍小的轉(zhuǎn)型范圍大的。注意:在轉(zhuǎn)型的時候,必須要規(guī)定, 小范圍的對象本來就是屬于大范圍的對象才行。 抽象概念還不能確定具體是做什么的方法。 規(guī)則:使用abstract關(guān)鍵字,不需要方法體。 如: public abstract void eat(); 這就是一個抽象的方法。 注意:抽象方法所在的類,一定需要是抽象類才行。 調(diào)用抽象類,不能直接調(diào)用。 需要創(chuàng)建實現(xiàn)類,重寫抽象類里面的所有的抽象方法,并且需要打開方法體{ } 進行方法的設(shè)置。 除非子類也是抽象類,就不用所有的抽象方法都重寫。 特殊方法this當局部變量和成員變量同名的時候,使用“就進原則”。 先使用的是局部變量。訪問成員變量就使用this.成員變量。 構(gòu)造方法專門是用來創(chuàng)建對象用的。當我們new創(chuàng)建對象的時候,其實是在調(diào)用構(gòu)造方法。 注意: 1、如果,沒有編寫構(gòu)造函數(shù),編譯器會自動贈送一個構(gòu)造方法 2、不能返回一個具體的值。 3、構(gòu)造方法也是可以重載的。 final的使用代表最終、不可改變(內(nèi)容還是可以變的) 對于類和方法來說,abstract和final不能同時使用, final四種用法:1、 修飾類 規(guī)定:當前類不能有任何的子類。(太監(jiān)類) 類中的所有成員方法不能進行覆蓋重寫。 2、 修飾方法 規(guī)定:這個方法是最終的方法。也是不能被覆蓋重寫。 3、修飾局部變量 規(guī)定: 一次賦值,終生不變。 對于基本類型,不變的是數(shù)據(jù)不變 對于引用類型,不變的是地址值不變。 4、修飾成員變量 因為成員變量有默認值,所以,final之后必須手動賦值, 要么,直接賦值,要么通過構(gòu)造方法賦值。 必須保證類中所有的重載的構(gòu)造方法,都最終會對final的成員變量進行賦值 Java的四種權(quán)限
內(nèi)部類就是事物的內(nèi)部包含另外一種事物。 成員內(nèi)部類、局部內(nèi)部類(包含匿名內(nèi)部類) 就是在類中嵌套一個類 注意:內(nèi)用外,隨意訪問,外用內(nèi),需要創(chuàng)建內(nèi)部對象, 調(diào)用格式: 外部類.內(nèi)部類 對象名 = new 外部類().內(nèi)部類(); |
|