java學習筆記finally_第1頁
java學習筆記finally_第2頁
java學習筆記finally_第3頁
java學習筆記finally_第4頁
java學習筆記finally_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、java學習筆記finally01 Java標識符Java對各種變量、方法和類等要素命名時使用的字符序列稱為標識符。 凡是可以自己取名字的地方都叫標識符,都要遵守標識符的命名規(guī)則。Java標識符的命名規(guī)則 標識符由字母、下劃線“_”、美元符號”$”或數(shù)字組成。 標識符應以字符、下劃線或美元符號開頭。 Java標識符區(qū)分大小寫,長度無限制。約定俗成:Java標識符應做到見文知意,且不能與java 語言關鍵字重復。Java關鍵字:02 Java常量 Java常量值用字符串表示,區(qū)分為不同的數(shù)據(jù)類型。如整型常量123 實型常量 3.13 字符常量 ”a” 邏輯常量 true false 字符串常量

2、“hello world” 注意:區(qū)分字符常量和字符串常量。 參見final關鍵字。 常量指示的是值是不能改變的變量。03 Java變量 Java變量是程序中最基本的存儲單元, 其要素包括變量名,變量類型和作用域。 Java程序中每一個變量都屬于特定的數(shù)據(jù)類型,在使用前必須對其聲明,聲明格式為:Type varname=value;如 int a=123; 從本質上講,變量其實是內存中的一小快區(qū)域,使用變量名來訪問這塊區(qū)域。因此,每一個變量使用前必須要先聲明(申請),然后必須進行賦值(填充內容),才能使用。04 程序執(zhí)行過程1程序從硬盤加載到內存區(qū)2找到main函數(shù)開始執(zhí)行3 執(zhí)行過程中的內存

3、管理 heap 堆 stack 棧05 Java變量的分類 按其聲明的位置劃分局部變量:方法或語句塊內部定義的變量。方法體內部聲明的變量(包括形參)稱為局部變量。方法體內部是指與方法對應的大括號內部。成員變量:方法外部、類的內部定義的變量。方法體外,類體內聲明的變量稱為成員變量。注意:類外面不能有變量的聲明。局部變量和成員變量在內存中屬于不同的區(qū)域。 按所屬的數(shù)據(jù)類型劃分:基本數(shù)據(jù)類型變量引用數(shù)據(jù)類型變量Java基本數(shù)據(jù)類型(4種8類)不同的是數(shù)據(jù)在內存中所占的長度大小以及0,1在內存中的排列。數(shù)值型:整型(byte 字節(jié)型,int 整型,short 短整型,long 長整型)Java各整數(shù)類

4、型有固定的表數(shù)范圍和字段長度。一個字節(jié)為8位。三種整型常量表示方式:十進制:12八進制:012十六進制:0x12Java語言的整型常量默認為int型,聲明long型常量可以后在l或L。浮點型:(float 單精度 double雙精度)有固定的表數(shù)范圍和字段長度,不受平臺的影響。兩種表示方式:十進制法:12.32科學計數(shù)法方式:12e3Java 浮點數(shù)默認為double類型,如要聲明一個常量為float類型,則需在數(shù)字后面加f或F。如double e=122.323; float f=343.34f;字符型(文本型):char。字符常量為單引號括起來的單個字符。Java字符采用Unicode編碼

5、,每個字符占兩個字節(jié)。注意:二進制,八進制和十六進制的轉換。布爾型:boolean。適用于邏輯運算,一般用于程序流程控制。只允許取值true或false,不可以用0或非0替代true和false,這點和C語言不同。06 基礎數(shù)據(jù)類型的轉換l Boolean類型不可以轉換為其他的數(shù)據(jù)類型。l 整型、字符型、浮點型的數(shù)據(jù)在混合運算中相互轉換,轉化時遵循以下原則: 容量小的類型自動轉換為容量大的數(shù)據(jù)類型;數(shù)據(jù)類型按容量大小排序為:byte,short,charintlongfloatdoublebyte,short,char之間不會相互轉換,他們三者在計算時首先會轉換為int類型。 容量大的類型轉換

6、為容量小的數(shù)據(jù)類型時,要加上強制符,但可能造成精度降低或溢出,使用時要格外注意。 有多種類型的數(shù)據(jù)混合運算時,系統(tǒng)首先自動的將所有數(shù)據(jù)轉換成容量最大的那一種數(shù)據(jù)類型,然后再進行計算。實數(shù)常量默認為double。整數(shù)常量默認為int.07 程序格式比算法還重要。格式應該注意的問題。 大括號對齊 遇到縮進,Tab/Shift+Tab 程序塊之間加空行 并排語句之間加空行 運算符兩側加空格1、 有特定條件 前面有空格 成對編程程序格式的原則 要讓別人看得清楚 要讓別人看得舒服08 運算符Java語言支持如下運算符: 算法運算符 +, - ,* ,/ ,%, + ,- 關系運算符 ,=, , 賦值運算

7、符:=,當兩側數(shù)據(jù)類型不一致時,可以適用默認類型轉換或使用強制類型轉換原則進行處理。對于byte,short,char等類型變量,只要不超出其表數(shù)范圍,則不需要強制類型轉換。 擴展賦值運算符:+=,-=,*=,/=, 字符串連接運算符:+。+運算符兩側的操作數(shù)中只要一個是字符串類型,系統(tǒng)會自動將另一個操作數(shù)轉換為字符串然后再進行連接。+放在后面,先取值后運算+放在前面,先運算再取值。當進行打印的時候,無論任何類型都自動轉換為字符串進行打印。09 表達式符合一定語法規(guī)則的運算符和操作數(shù)的序列。表達式的值和類型:對表達式中的操作數(shù)進行運算得到的結果稱為表達式的值。表達式的值的類型即為表達式的類型。

8、表達式的運算順序應按照運算符的優(yōu)先級從高到低的順序進行。優(yōu)先級相同的運算符按照事先約定好的結合方向進行。運算符優(yōu)先級,結合方向。三目條件運算符X?Y:Z其中X為boolean類型表達式,先計算X的值,若為true,則整個三目運算的結果為Y的表達式的值,否則整個運算結果為表達式Z的值。默認情況下,實例變量和類變量的初始值取決于其數(shù)據(jù)類型。l 數(shù)值變量:0l 字符變量:0l 布爾變量:falsel 對象:null字符串的運算運算符+拼接運算10 對象創(chuàng)建對象使用newVolcanoRobot robbie = new VolcanoRobot();圓括號很重要,不能省略。括號可以為空,在這種情況下

9、,創(chuàng)建的將是最簡單最基本的對象;也可以包含參數(shù),這些參數(shù)決定了對象的實例變量的初始值和其他初始量。測試和修改對象的類變量獲取值要獲取實例變量的值,可以使用句點表示法。實例變量和類變量由兩部分組成,.句點運算符左邊為對象和類的引用;.句點運算符右邊為變量名句點表示法是一種引用對象的實例變量和方法的方式。類變量是在類中定義和存儲的,它們的值適用于類及其所有的實例。定義類變量的方法是,在前面加上關鍵字static.修改類變量的值將影響所有的實例。調用對象的方法調用對象的方法時也使用句點表示法。被調用的對象位于句點的左邊,方法名及其參數(shù)位于句點的右邊。如:將對象從一個類轉換為另一個類類的對象也可被轉換

10、為其他類的對象,但必須滿足如下條件:源類和目標類之間存在繼承關系,即其中一個類是另一個類的子類。比較對象、判斷對象所屬的類、判斷對象是否是特定類的實例比較對象= 比較對象是否相同(即引用(地址)equals 比較對象的值是否相同判斷對象所屬的類想確定對象所屬的類,可以采用下述方法,這里判斷的是賦給key的對象所屬的類:String name = key.getClass().getName();另一種檢測方式是instanceof 運算符,它使用兩個操作數(shù),左邊為對象的引用,右邊為類名,該表達式返回一個布爾值,如果該對象是這種類或子類的實例,為true,否則為false。11 數(shù)組、邏輯和循環(huán)

11、創(chuàng)建數(shù)組 new 系統(tǒng)自動初始化訪問、修改數(shù)組,數(shù)組名加索引訪問和修改數(shù)組元素。如: int a = new int 99; 自動初始化為0;a23訪問,a23 = 23;對數(shù)組元素進行修改。多維數(shù)組:數(shù)組可以是多維的,包含多個下標,以多維方式存儲信息。塊語句Java中的語句被組織為塊,塊以花括號表示開始,表示結束。它為塊中聲明的局部變量創(chuàng)建了作用域,在其中變量存在并可使用,如果在變量的作用域外使用它,將發(fā)生錯誤。if語句條件語句僅在指定條件滿足時才執(zhí)行。if 條件語句使用布爾表達式來判斷是否執(zhí)行語句。如果表達式返回true,則執(zhí)行語句。也可以在條件為false的時候執(zhí)行其他語句,else。s

12、witch 條件語句如果要與多個值進行比較,用switch語句更佳。如:在每個case之后,可以有任何數(shù)目的語句,每個case中都有一個break 語句,用于指出何時停止執(zhí)行語句,如果case中沒有break語句,則找到匹配的情況后,該case中的語句及其后到break或switch末尾的所有語句都執(zhí)行。for循環(huán)for循環(huán)用于重復執(zhí)行語句,直到條件得到滿足。在Java中,for循環(huán)的格式如下:initialization 是一個表達式,用來初始化循環(huán)的起始狀態(tài),test是每次迭代前都要進行的檢測,它必須是布爾表達式或返回值為布爾值的函數(shù),increment 用于修改循環(huán)變量的值,從而將循環(huán)狀

13、態(tài)引向返回false的狀態(tài),最終結束循環(huán)。while和dowhile循環(huán)while循環(huán)用于重復執(zhí)行一條語句,直到特定條件不為true為止。先判斷條件,再執(zhí)行。dowhile 循環(huán)do 循環(huán)與while循環(huán)非常類似,主要區(qū)別在于檢測條件的位置。while循環(huán)在循環(huán)執(zhí)行前檢測條件,因此如果首次檢測條件為false,則循環(huán)體一次也不會執(zhí)行。do 循環(huán)在檢測條件之前,至少執(zhí)行循環(huán)體一次,因此如果首次檢測條件為false,則循環(huán)體已經執(zhí)行一次了。跳出循環(huán)在所有循環(huán)中,當測試條件滿足時循環(huán)將結束,有時,在循環(huán)執(zhí)行過程中,當發(fā)生了某種情況后,需要提前結束循環(huán),在這種情況下,可以使用關鍵字break 和con

14、tinue。break 立即結束當前循環(huán),如果在循環(huán)中嵌套了循環(huán),將跳到外層循環(huán)中。continue 關鍵字直接進入循環(huán)的下一次迭代。對于do 和while 循環(huán)這就意味著重新回到塊語句從頭執(zhí)行,對于for循環(huán),則計算增量表達式,然后執(zhí)行塊語句。注意:break和continue的區(qū)別12 創(chuàng)建類和方法在Java中,程序由main 主類以及用于支持主類的其他類組成。支持類包括你可能需要的Java2類庫中的類(如String 、Math).類定義的組成部分class Ticker/the body of the classextends 關鍵字用于指定超類創(chuàng)建和使用實例變量每當創(chuàng)建類時,都需要定

15、義新類不同于其超類的行為。行為是通過指定新類的變量和方法定義的。Java中有3中常用的變量:類變量、實例變量和局部變量。實例變量:在方法定義外聲明且沒有使用關鍵字static修飾的變量都是實例變量。類變量適用于整個類,而不是類的各個對象,適合用于在同一種類的不同對象之間共享信息或記錄類級信息。在類定義中使用關鍵字static來聲明類變量。創(chuàng)建和使用方法方法定義了對象的行為,即在對象被創(chuàng)建時發(fā)生的事情或對象在其生存期內能夠執(zhí)行的各個任務。定義方法:在Java中,方法定義有4個基本的部分:l 方法名;l 參數(shù)列表;l 方法返回的對象類型或基本數(shù)據(jù)類型l 方法體。方法定義的前面2個部分構成了方法的特

16、征標?;镜姆椒ǘx:方法的參數(shù)列表是一組變量聲明,它們被放在圓括號內,并用逗號分隔。這些參數(shù)是方法體內的局部變量,當方法調用時,將獲得它們的值。方法體內可以包含語句、表達式、對其他對象的方法調用、條件語句、循環(huán)等。除非返回類型被聲明為void ,否則方法執(zhí)行完畢時,將返回某種類型的值,必須在方法的出口點使用關鍵字return 顯式地返回這個值。關鍵字this有時候,你可能想在方法體中引用當前對象,即其方法被調用的對象,以便將當前對象的實例變量或當前對象作為參數(shù)傳遞給其他方法。在這種情況下,要引用當前對象,可以使用關鍵字this。關鍵字this指向當前對象,可用于任何可使用對象引用的地方,在句

17、點表示法中,作為方法的參數(shù),作為當前方法的返回值等。用于this是指向當前實例的引用,因此只能在實例方法的定義體內使用它。在類方法中(用關鍵字static聲明的方法)中,不能使用this。變量的作用域和方法的定義要使用變量,必須知道其作用域。作用域是程序的一部分,在其中可以使用某個變量或其他類型的信息,超出作用域后,該變量將不復存在。在java中聲明變量時,便限定了該變量的作用域。如,局部變量只能在定義它的語句塊中使用,實例變量的作用域是整個類,因此可以被類中的任何實例方法使用。當引用變量時,java從最里面的作用域向外查找其定義。在這個類中,有兩個名稱皆為test的變量。前者是實例變量,被初

18、始化為10;后者是局部變量,值為20.方法printTest()中的局部變量隱藏了實例變量test。在方法main()中調用printTest()時,它顯示的值為20,雖然有一個值為10的實例變量test。為了避免這種問題,可以使用this.test 來引用實例變量,使用test來引用局部變量,但更好的方法是盡量避免使用相同的變量名和定義。將參數(shù)傳遞給方法調用接收對象參數(shù)的方法時,對象是按引用傳遞的。類方法類變量和實例變量之間的關系與類方法和實例方法的關系相同。類方法可以被類的任何實例使用,也可被其他類使用,此外,與實例方法不同,調用類方法時,不需要有類的對象。定義類方法時,需要在方法定義前加

19、上關鍵字static。如果方法前沒有關鍵字static,則該方法是實例方法,實例方法只能在對象中運行,而不能在類中運行。大多數(shù)操作或影響特定對象的方法都應定義為實例方法,哪些提供通用功能,但不直接影響特定對象的方法應聲明為類方法。不同于實例方法,類方法不能被繼承,因此在子類中不能覆蓋超類中的類方法。Java應用程序中的main()方法應用程序的入口類,是程序的入口。應用程序運行時,Java虛擬機將調用該方法。創(chuàng)建重載方法,名稱相同但定義和特征標不同創(chuàng)建同名方法:使用java類庫時,通常會遇到很多同名方法的類。名稱相同的方法是通過下述兩個因素區(qū)分的:l 參數(shù)個數(shù)l 參數(shù)的數(shù)據(jù)類型或對象這兩個因素

20、都是方法特征標的一部分,使用多個名稱相同但特征標不同的方法被稱為重載。方法重載可以避免使用完全不同的方法來完成幾乎相同的任務。重載也使得方法能夠根據(jù)收到的參數(shù)進行不同的操作。當調用對象的方法時,Java將對方法名和參數(shù)進行匹配,以確定應執(zhí)行哪個方法定義。要創(chuàng)建重載方法,可在同一類中創(chuàng)建多個不同的方法定義,它們的名稱相同,但參數(shù)列表不同。不同之處可以是參數(shù)數(shù)目、參數(shù)類型,也可以兩者都不同。只要參數(shù)列表是獨特的,Java允許對方法進行重載。創(chuàng)建構造函數(shù)在類定義中,還可以定義構造函數(shù),這些方法在對象被創(chuàng)建時自動被調用。構造函數(shù)是在對象被創(chuàng)建(被構造)時調用的方法。與其他方法不同,構造函數(shù)不能被直接調

21、用。使用new來創(chuàng)建類的實例時,Java完成下述3項工作:l 為對象分配內存l 初始化對象的實例變量,賦予初值或設置為默認值(數(shù)值為0,對象為null,布爾值為false、字符值為0)調用類的構造函數(shù)如果類沒有構造函數(shù),則結合使用new和該類的名稱時,仍將創(chuàng)建一個對象。通過在類中定義構造函數(shù),可以為實例變量設置初值,調用基于這些變量的方法,調用其他對象的方法以及設置對象的初始屬性。如果類包含接收一個或多個參數(shù)的構造函數(shù),則僅當這個類有不接受任何參數(shù)的構造函數(shù)時,才能調用這樣的構造函數(shù)?;镜臉嬙旌瘮?shù)構造函數(shù)與常規(guī)方法類似,但有3個基本區(qū)別:l 名稱與類名相同l 沒有返回類型l 不能使用retu

22、rn 語句來返回一個值調用另外一個構造函數(shù)構造函數(shù)的重載與常規(guī)方法一樣,構造函數(shù)也能接受不同數(shù)目和不同類型的參數(shù)。覆蓋方法創(chuàng)建覆蓋現(xiàn)有方法的方法要覆蓋方法,只需在子類中創(chuàng)建一個特征標(名稱、返回值和參數(shù)列表)與超類相同的方法即可??稍赟ubPrinter類中覆蓋printMe()方法,并在其中添加一條顯示實例變量z的語句:調用原來的方法例子:13 包、接口和其他類特性類是用于創(chuàng)建對象的模板,對象能夠存儲數(shù)據(jù)和完成任務??刂茖Ψ椒ê妥兞康脑L問將類、方法和變量固定下來,禁止在子類中覆蓋其定義或值創(chuàng)建抽象的類和方法,將通用行為放到超類中將多個類組合成包使用接口填補類層次結構中的空白限定符Java語言

23、提供了4種級別的訪問控制:公有、私有、受保護和默認(不使用訪問控制限定符)默認:聲明變量和方法時,如果沒有使用任何訪問控制限定符,則它們對同一個包中的其他任何類都是可用的。私有:要完全將方法或變量隱藏起來,不被其他類使用,可使用private限定符,這種變量僅在其所在的類中是可見的。私有實例變量可被其所屬類中的方法使用,但不能被其他任何類的對象調用,私有方法也可被其所屬類中的其他方法調用,但不能被其他任何方法調用。這種限制也會影響繼承:任何私有變量和私有方法都不能被子類繼承。公有:類中的方法或變量可供任何類使用。保護:使方法和變量僅供以下類使用(子類和同一包中的其他類)比較各種訪問控制級別繼承

24、方法的法則l 在超類中被聲明為公有的方法在子類中必須也是公有的;l 在超類中被聲明為保護的方法在子類中可以是保護的或公有的,但不能是私有的;l 對于沒有訪問控制的方法(沒有指定限制符),在子類中其訪問控制可以更嚴格。被聲明為私有的方法根本不能繼承,因此上述規(guī)則不適用。final類、方法和變量限定符final用于類、方法和變量,指出它們將不會被修改。final類不能被繼承final方法不能被子類覆蓋final變量的值不能被修改抽象類抽象類可以包含常規(guī)類能夠包含的任何東西,包含構造函數(shù),因為子類可能需要繼承這種方法,抽象類也可以包含抽象方法,這時只有方法特征標,而沒有實現(xiàn)方法,這些方法將在抽象類的

25、子類中被實現(xiàn)。抽象類用限定符abstract來聲明,不能在非抽象類中聲明抽象方法,如果一個抽象類除抽象方法外什么都沒有,則使用接口更合適。包包是一種組織類的方式。包中可以包含任意數(shù)量的類,這些類的用途相關或有繼承關系。包的用途l 包能夠將類組織成單元l 包減少了名稱沖突帶來的問題。l 包能夠大面積地保護類、變量和方法而不是分別對每個類進行保護。l 包可以用于唯一地標識類。14 異常和線程(線程是重點,重新看)Java中兩個功能最強大的元素,線程和異常。線程是實現(xiàn)了Runnable接口或繼承了Thread類的對象,能與Java程序的其他部分同時運行;異常是表示Java運行階段可能發(fā)生的錯誤的對象

26、。線程讓程序能夠更高效地利用其資源,這是通過將程序的計算密集型部分分離開來,避免其降低程序其他部分的速度來實現(xiàn)的;異常讓程序能夠識別錯誤并作出響應,異常甚至可以幫助程序校正狀態(tài),并在可能的情況下繼續(xù)運行。異常線程使用Java進行編程時,需要考慮的問題之一是如何使用系統(tǒng)資源。圖形、復雜的數(shù)學計算和其他密集型任何可能占用大量的處理器時間。使用圖形用戶界面的程序尤其如此。如果你編寫的圖形Java程序需要完成某種占用大量計算機時間的任務,將發(fā)現(xiàn)該程序的圖形用戶界面的響應速度非常慢。為解決這種問題,可將Java程序中占用大量處理器時間的函數(shù)分離開來,讓它們同程序的其他部分分開運行。這時通過線程的特性來實

27、現(xiàn)的。線程是程序的一部分,它們在程序的其他代碼執(zhí)行其他工作時獨立運行,這也被稱為多任務,因為程序可以同時處理多項任務。線程適合用于完成占用大量處理時間且連續(xù)運行的任務。通過將程序的工作負荷放到線程中,可以讓程序的其他部分處理其他任務。這也使虛擬機能夠更容易地對程序進行處理,因為所有的處理器密集型工作都被放到獨立的線程中。15 Java類庫數(shù)據(jù)結構表示數(shù)據(jù)的類,包括如下所述的數(shù)據(jù)結構l 位組(bit set):用于存儲布爾值l 鏈表(array list):可調整長度的數(shù)組l 堆棧(stack):后進先出(LIFO)型結構l 散列映射(hash map):使用鍵存儲數(shù)據(jù)項iterator 接口接口iterator 提供了一種以定義好的順序遍歷一系列元素的標準方式。方法hasNext() 定義了結構是否還包含其他元素方法next()獲得結構中的下一個元素數(shù)據(jù)結構的遍歷堆棧數(shù)據(jù)結構堆棧用于模擬以特定順序進行訪問的信息。在Java中,Stack類被實現(xiàn)成一個后進先出的堆棧,這意味著最后加入的項將首先被彈出。堆棧的聲明:Java類Stack 包含用于操作堆棧的方法可使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論