久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JAVA

 昵稱62574573 2019-03-05

?1)java語(yǔ)言基礎(chǔ)(3周)

2)mysql

3)jdbc:java訪問(wèn)數(shù)據(jù)庫(kù)技術(shù)

4)項(xiàng)目:控制臺(tái)管理項(xiàng)目


1)html,、css,、javascript

2)javaweb(JSP、Servlet)

3)ajax

4)jQuery

5)配置管理工具

6)項(xiàng)目:web項(xiàng)目

3.框架(SSM)

1)MyBatis

2)Spring

3)Spring MVC

4)Maven:項(xiàng)目管理工具

5)Linux

6)Redis


\t:制表符

\n:換行符


ctrl+z:撤銷前一步的操作


window=》透視圖=》回復(fù)透視圖(一組view窗口)

view:一個(gè)窗口


在eclipse中默認(rèn)使用粗體顯示

window=>preferences=>java=>editor=>syntax coloring=>keywords excluding return



6.整數(shù)類型:byte,、short,、int、long

byte:1個(gè)字節(jié)等于8個(gè)bit,,-128到127

short:2個(gè)字節(jié)16個(gè)bit,,正負(fù)3萬(wàn)多

int:4字節(jié),32個(gè)bit,,正負(fù)21億多

long:8字節(jié),,64bit,,

7.浮點(diǎn)數(shù):float、double

float:?jiǎn)尉雀↑c(diǎn)數(shù),,32bit,,有效位數(shù)6-7位

double:雙精度浮點(diǎn)數(shù),64bit,,有效位數(shù):15-16位

8.字符型:char

java中字符型的值,,通常用英文單引號(hào)括起來(lái),代表單個(gè)字符

長(zhǎng)度為16bit,,是一個(gè)無(wú)符號(hào)整數(shù),,最小值為:0,最大值:65535

轉(zhuǎn)義字符:使用“\”把其轉(zhuǎn)化為字符本身輸出,,那么使用“\”的字符成為轉(zhuǎn)義字符

\t:制表符

\n:換行符

\\:表示輸出一個(gè)斜杠“\” 

\':表示單引號(hào)

\":表示雙引號(hào)

9.布爾類型——boolean

boolean類型適合與邏輯運(yùn)算,,一般用于表示真和假

boolean類型的值兩個(gè):true、false


1)ASCII:美國(guó)信息交換標(biāo)準(zhǔn)代碼,,主要用于英語(yǔ)和其他西歐語(yǔ)言,,128個(gè)

48=》'0'

57=> '9'

65=>'A'

97=>'a'

32=>空格符

13=》回車符

2)gb2312:中文編碼

3)gbk:中文編碼

4)window-1251:俄文編碼

5)unicode:收集了世界所有國(guó)家的文字,,進(jìn)行統(tǒng)一編碼

1)utf-8:使用1到4個(gè)字節(jié)為每個(gè)字符編碼,,為長(zhǎng)度可變的編碼,,能減少存儲(chǔ)空間,,使用最廣泛的

2)utf-16:使用2或4個(gè)字節(jié)為每個(gè)字符編碼,java中的char類型使用就是該編碼方式

3)utf-32:使用4個(gè)字節(jié)為每個(gè)字符編碼


1)創(chuàng)建鍵盤輸入對(duì)象:

Scanner input = new Scanner(System.in);

2)從鍵盤讀取數(shù)據(jù),,并轉(zhuǎn)換為int類型,,該方法是一個(gè)阻塞的方法(如果不從鍵盤輸入內(nèi)容,,該程序不會(huì)向下運(yùn)行)

input.nextInt();


1.++ --

  n++

  ++n

  

2.關(guān)系運(yùn)算(比較運(yùn)算符):> < == != >= <=

結(jié)果:boolean

3.邏輯運(yùn)算:

&&

||

,!

&

|

4.位運(yùn)算:只對(duì)byte,、short、char,、int,、long有效

&

|

^

<<

>>

>>>

5.三元運(yùn)算符:表達(dá)式1?表達(dá)式2:表達(dá)式3


優(yōu)先級(jí):

1元 > 2元 > 3元

算數(shù) > 比較 > 邏輯 > 賦值

括號(hào)最高

類型轉(zhuǎn)換

1.自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換):由取值范圍小的向取值范圍大的轉(zhuǎn)換

2.強(qiáng)制類型轉(zhuǎn)換  (int)3.14

程序邏輯:


補(bǔ)充:

Scanner方法:

next():讀取字符串,,到空格或回車結(jié)束

nextLine():讀取一行字符串,,到回車結(jié)束

String 方法:

charAt(index):根據(jù)字符的索引號(hào),得到對(duì)應(yīng)的字符(索引號(hào)從0開始)



2.條件語(yǔ)句:主要用于告知程序當(dāng)某個(gè)添加成立時(shí),,須執(zhí)行滿足條件的相關(guān)語(yǔ)句

語(yǔ)法:if(條件){

語(yǔ)句

  }



4.if...else...語(yǔ)句

if(條件){

語(yǔ)句塊1

}else{

語(yǔ)句塊2

}

條件為true,,執(zhí)行語(yǔ)句塊1,否則,,執(zhí)行語(yǔ)句塊2

5 if...else if...

if(條件1){

語(yǔ)句塊1

}else if(條件2){

語(yǔ)句塊2

}else{

語(yǔ)句塊3

}


條件1為true,,執(zhí)行語(yǔ)句塊1,否則如果條件2為true,則執(zhí)行語(yǔ)句塊2,,否則執(zhí)行語(yǔ)句塊3


7.switch語(yǔ)句:

語(yǔ)法:

switch(表達(dá)式){

case 值1:

語(yǔ)句塊;

case 值2:

語(yǔ)句塊;

...

default:

語(yǔ)句塊;

}

運(yùn)行過(guò)程:

1.計(jì)算switch后表達(dá)式的值

2.把該值與case后的值進(jìn)行比較,,如果找到相等的,,則,運(yùn)行該case后的語(yǔ)句塊內(nèi)容,,而不管后面的case條件是否滿足,,

  直到碰到break關(guān)鍵字或結(jié)束switch語(yǔ)句的大括號(hào)為止

  

注意:

1)表達(dá)式的值只可以接受int、byte,、char,、short、String型,,不接受其他數(shù)據(jù)類型的值

2)不允許有重復(fù)的case取值

3)case 之間與default沒有順序,先判斷所有的case,,沒有匹配的case再執(zhí)行default,。

4)只能進(jìn)行等值比較



8.while循環(huán)

語(yǔ)法:

while(表達(dá)式){

循環(huán)體語(yǔ)句塊

}

執(zhí)行過(guò)程:

1.計(jì)算表達(dá)式的值,如果該表達(dá)式的值為true,,執(zhí)行循環(huán)體中的語(yǔ)句

2.然后再判斷表達(dá)式的值是否為true,,如果為true,,再次執(zhí)行循環(huán)體語(yǔ)句,,直到表達(dá)式的值為false,循環(huán)結(jié)束

9.隨機(jī)數(shù):在產(chǎn)生過(guò)程中是按照分布概率隨機(jī)產(chǎn)生的,,其結(jié)果是不可以預(yù)測(cè)的

  偽隨機(jī)數(shù):計(jì)算機(jī)中的隨機(jī)函數(shù)是按照一定算法模擬產(chǎn)生的

  //包:java.util.Random

  Random r = new Random();

  方法: nextInt(bound):產(chǎn)生一個(gè)大于等于0,,小于bound的整數(shù)

  

10.do...while循環(huán)

語(yǔ)法:

do{

循環(huán)體語(yǔ)句塊

}while(表達(dá)式);

執(zhí)行過(guò)程:

1.先執(zhí)行循環(huán)體語(yǔ)句塊代碼一次,,再判斷while后的表達(dá)式是否為true

2.如果為true,再次執(zhí)行循環(huán)體語(yǔ)句塊,,直到while后的表達(dá)式為false,結(jié)束循環(huán)

特點(diǎn):循環(huán)體語(yǔ)句塊至少執(zhí)行一次

11.for循環(huán)

語(yǔ)法:

for(初始化表達(dá)式;循環(huán)條件表達(dá)式;循環(huán)體后表達(dá)式){

循環(huán)體語(yǔ)句塊

}

執(zhí)行過(guò)程:

1.先執(zhí)行初始化表達(dá)式,,在整個(gè)循環(huán)過(guò)程中,,該表達(dá)式只執(zhí)行一次

2.執(zhí)行循環(huán)條件表達(dá)式,如果該表達(dá)式的值為true,,則執(zhí)行循環(huán)體語(yǔ)句塊,,然后執(zhí)行循環(huán)體后表達(dá)式

3.然后判斷循環(huán)條件表達(dá)式是否為true,如果為true,,繼續(xù)執(zhí)行循環(huán),,若為false,,則退出循環(huán)

12、String的equals()方法

用來(lái)比較兩個(gè)字符串的內(nèi)容是否相等,,若相等,,返回true,否則,返回false

例如:

String s1 = "tom";

String s2 = "marry";

boolean b = s1.equals(s2); //false

boolean b2 = s1.equals("tom");//true

13.嵌套循環(huán)

循環(huán)體中包含另一個(gè)循環(huán)

****

****

****

****

****




*        1

**       2

***      3

****

*****


14.死循環(huán):循環(huán)無(wú)法結(jié)束,,一直執(zhí)行

15.break:用來(lái)終止某個(gè)語(yǔ)句塊的執(zhí)行,,用在循環(huán)中,用來(lái)強(qiáng)制退出循環(huán)

break;//終止當(dāng)前循環(huán)的執(zhí)行

break lable;//終止lable循環(huán)的執(zhí)行

16.continue:只能用在循環(huán)中,,跳過(guò)本次循環(huán)的剩余語(yǔ)句,,執(zhí)行下一次循環(huán)



1.while(循環(huán)條件){

循環(huán)體語(yǔ)句塊

}


2.do{

循環(huán)體語(yǔ)句塊

  }while(循環(huán)條件);

 

3.for(初始化表達(dá)式;循環(huán)條件;循環(huán)體執(zhí)行后代碼){

循環(huán)體語(yǔ)句塊

  }

  

  for(int i = 1,j = 1; i <= 10;i++,j++){

  }

  

4.break;//終止語(yǔ)句的執(zhí)行(switch、循環(huán))

break;

break lable;

5.continue:只能用在循環(huán)中,,跳過(guò)本次循環(huán)的剩余語(yǔ)句,,執(zhí)行下一次循環(huán)



數(shù)組元素的默認(rèn)值:都是0

boolean類型數(shù)組:false

char類型數(shù)組:utf-16編碼中的0 '\u0000'

int類型數(shù)組:0

double類型數(shù)組:0.0

引用類型:null(空)


9.數(shù)組的長(zhǎng)度:

數(shù)組名.length(屬性)

10.異常:程序運(yùn)行期間,發(fā)生的錯(cuò)誤,,叫做異常

異常發(fā)生后,,如果沒有處理,就會(huì)終止程序的運(yùn)行

java.lang.ArrayIndexOutOfBoundsException:數(shù)組越界異常

11.foreach循環(huán)(語(yǔ)法糖)

語(yǔ)法:

for(數(shù)組元素的數(shù)據(jù)類型 變量名 : 數(shù)組名){

循環(huán)體語(yǔ)句塊

}


執(zhí)行過(guò)程:

該循環(huán)方式為按照數(shù)組下標(biāo)順序,,依次將冒號(hào)右邊數(shù)組中的每一個(gè)元素賦值給冒號(hào)左邊的變量,,然后執(zhí)行循環(huán)體語(yǔ)句

循環(huán)的次數(shù)為數(shù)組的長(zhǎng)度

12.排序:冒泡排序

1)相鄰元素進(jìn)行比較

2)每趟循環(huán)找出比較范圍內(nèi)的最大值

3)外循環(huán)比較N-1次(N表示數(shù)組的長(zhǎng)度)

4)內(nèi)循環(huán)比較N - i - 1次(i表示外循環(huán)的循環(huán)變量)

5)內(nèi)循環(huán)的循環(huán)體中,判讀元素的順序是否錯(cuò)誤,,已決定是否需要交換


13.Arrays:該類是數(shù)組的工具類,,包含了數(shù)組的常見操作,比如排序

Arrays.sort(數(shù)組名);————對(duì)數(shù)組進(jìn)行升序排序


Arrays.toString(數(shù)組名):遍歷數(shù)組元素,,生成一個(gè)字符串

/*int[] arr = {1,2,3,4};

int temp;

for(int i = 0;i < arr.length/2;i++) {

temp = arr[i];

arr[i] = arr[arr.length-i-1];

arr[arr.length-i-1] = temp;

}

System.out.println(Arrays.toString(arr));*/

第五章 方法聲明及調(diào)用


1)代碼重用

2)簡(jiǎn)化了程序的編寫和維護(hù)

4.static:靜態(tài)的

修飾方法的時(shí)候,,該方法就稱為靜態(tài)方法

語(yǔ)法規(guī)定:靜態(tài)方法中只能直接調(diào)用靜態(tài)方法

return 表達(dá)式:作用是將return后面表達(dá)式的結(jié)果作為方法的返回值,

注意:return后表達(dá)式的值要與方法聲明的返回值類型匹配




方法定義:

返回值類型(void) 方法名(參數(shù)列表){

方法體

return 返回值;

}

參數(shù)的意義:代碼實(shí)現(xiàn)功能,,需要的外部數(shù)據(jù),,在調(diào)用方法的時(shí)候,傳遞給該方法

返回值的意義:把方法處理的結(jié)果返回給調(diào)用方

7.方法的參數(shù)為引用類型:傳遞的是引用類型數(shù)據(jù)的地址給形參,,于是就可以通過(guò)形參來(lái)使用堆中的對(duì)象


8.遞歸方法:一個(gè)方法體內(nèi)調(diào)用它自身,,這樣的方法稱為方法遞歸

遞歸的特點(diǎn):方法遞歸包含了一種隱式的循環(huán),它會(huì)重復(fù)執(zhí)行某段代碼,, 但這種重復(fù)執(zhí)行無(wú)須循環(huán)控制


b(n)

1*2*3*4*5=5*b(4)=5*4*b(3)=5*4*3*b(2)=5*4*3*2*b(1)=5*4*3*2*1


9.方法的重載(overload)

就是在同一個(gè)類中,,允許同時(shí)存在一個(gè)以上同名的方法

規(guī)則:

1) 方法名稱相同

2)方法的參數(shù)必須不同(參數(shù)個(gè)數(shù)不同或參數(shù)類型不同)

3)方法的返回值類型可以相同也可以不同(方法的返回值不看)

作用:名稱重用



3.類

1)語(yǔ)法格式:

[類修飾符] class 類名{

類的成員

}

類的成員:

成員變量(屬性):對(duì)象的狀態(tài),、情況的描述(name,、age、health)

成員方法(方法):對(duì)象的行為(run,、jump,、call)





面向?qū)ο缶幊蹋∣OP)

面向?qū)ο蟮姆治觯∣OA)

面向?qū)ο蟮脑O(shè)計(jì)(OOD)

面向?qū)ο鬁y(cè)試(OOT)


6.匿名對(duì)象:

創(chuàng)建完對(duì)象,,直接調(diào)用這個(gè)對(duì)象的方法,這樣的對(duì)象就稱為匿名對(duì)象

new Good().tostring();

如果只使用該對(duì)象進(jìn)行一次方法調(diào)用,,可以創(chuàng)建匿名對(duì)象

7.垃圾回收機(jī)制

原理:當(dāng)沒有對(duì)象引用指向原先分配給某個(gè)對(duì)象的內(nèi)存時(shí),,該內(nèi)存便成為垃圾,jvm的一個(gè)系統(tǒng)級(jí)線程會(huì)自動(dòng)釋放該內(nèi)存塊

垃圾回收只作用于堆內(nèi)存,,與棧內(nèi)存無(wú)關(guān)

8.構(gòu)造方法:也叫構(gòu)造器

1)構(gòu)造方法也是方法,,但是它是特殊的方法

2)所有的對(duì)象都是通過(guò)構(gòu)造器來(lái)創(chuàng)建的

特點(diǎn):(與類同名,沒有返回值)

1)構(gòu)造方法名稱與類同名

2)不含返回值類型,,也不寫void

3)不能在方法中用return語(yǔ)句返回值

注意:一個(gè)類可以不寫構(gòu)造方法,,編譯器會(huì)自動(dòng)的給這個(gè)類增加一個(gè)構(gòu)造方法,該構(gòu)造器沒有任何參數(shù),,稱為“默認(rèn)的空構(gòu)造器”

  如果給類添加了構(gòu)造方法,,系統(tǒng)(編譯器)就不再提供默認(rèn)的構(gòu)造器了

  

構(gòu)造方法重載:構(gòu)造方法可以像普通方法一樣進(jìn)行重載,通常一個(gè)類中不止一個(gè)構(gòu)造器,,讓使用者根據(jù)需要靈活調(diào)用

9.this關(guān)鍵字

1)代表對(duì)象自身的引用

a)一個(gè)引用

b)指向調(diào)用該方法的當(dāng)前對(duì)象

2)調(diào)用其他構(gòu)造方法

this(參數(shù)列表);

注意:只能是構(gòu)造方法的第一條語(yǔ)句



package 包名;

如果沒有package語(yǔ)句,,則默認(rèn)為無(wú)名包

常見包:

1)java.lang:默認(rèn)包,任何程序中,,該包都被自動(dòng)導(dǎo)入

2)java.util:工具包

包名+類名=類的完全限定名

訪問(wèn)包中的類:

1)訪問(wèn)同包中的類:直接訪問(wèn)

2)訪問(wèn)不同包中的類:使用import語(yǔ)句導(dǎo)(引)入其他包中的類

import使用注意:

a)必須在package聲明后,,類聲明前

b)import可以出現(xiàn)多次

c)import語(yǔ)句中可以使用通配符


訪問(wèn)權(quán)限修飾符:

1)public:公有的,在任何類中都可以訪問(wèn),,沒有任何限制

2)private:私有的,,不對(duì)外公開,private的成員變量只能在當(dāng)前類中使用,,其他任何類都不可以訪問(wèn)

3)default(friendly):默認(rèn)的,,包內(nèi)可見的,在該類所在的包中的其他類可以訪問(wèn),,包外的類不能訪問(wèn)

4)protected:受保護(hù)的,,子類看見

包下定義的類:訪問(wèn)權(quán)限修飾符可以為:public 和default,不能為private

封裝性的常規(guī)使用

1)將類中的屬性用private關(guān)鍵字進(jìn)行隱藏

2)通過(guò)規(guī)定方法訪問(wèn)屬性:

a)通過(guò)set開頭的公有方法對(duì)屬性賦值(set訪問(wèn)器),,在set方法中,,對(duì)不合法數(shù)據(jù)進(jìn)行檢查

b)用get開頭的公有方法得到屬性的值(get訪問(wèn)器)

12.static關(guān)鍵字(靜態(tài)的)

1)可以修飾的元素:

a)成員變量(屬性)

b)方法

c)代碼塊

注意:局部變量不能添加static來(lái)修飾


第七章 面向?qū)ο蟾呒?jí)特性

一、繼承

1.概念:也稱為泛化,,繼承性是子類自動(dòng)共享父類屬性和方法的機(jī)制,。在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候,可以在一個(gè)已經(jīng)存在的類的

        基礎(chǔ)上來(lái)進(jìn)行,,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,,并加入自己若干新的內(nèi)容

2.語(yǔ)言級(jí)別:在java中,在定義一個(gè)類的時(shí)候,,通過(guò)使用關(guān)鍵字extends繼承一個(gè)已有的類

3.語(yǔ)法格式:

class 類名 extends 父類{

}

4.被繼承的類稱為父類或超類,,繼承的類稱為子類或派生類

5.繼承好處:

1)使編碼更高效

2)易維護(hù)

3)代碼重用

6.子類繼承了父類除構(gòu)造方法之外的所有屬性和方法

   私有成員也被子類繼承,,但是無(wú)法訪問(wèn)

7.java中只支持單繼承,即只能有一個(gè)直接父類

8. 繼承判定標(biāo)準(zhǔn):子類 is a 父類(關(guān)系)

9.子類實(shí)例化的過(guò)程

1)子類實(shí)例化時(shí),,先實(shí)例化父類,,再實(shí)例化子類

2)要先調(diào)用父類的構(gòu)造器,再調(diào)用子類的構(gòu)造器

10.super關(guān)鍵字

1)super():調(diào)用父類的構(gòu)造方法

注意:只能出現(xiàn)在子類的構(gòu)造方法中,,且必須是第一行

  根據(jù)super()中參數(shù)決定調(diào)用父類的那個(gè)構(gòu)造方法

2)如果子類構(gòu)造器中沒有使用super調(diào)用父類的構(gòu)造器,,那么編譯器會(huì)默認(rèn)加上super(),即調(diào)用父類的無(wú)參數(shù)的構(gòu)造方法,

   如果父類沒有無(wú)參數(shù)的構(gòu)造器,,編譯器提示錯(cuò)誤

3)指向父類的引用

在子類的方法中,,明確表示使用父類中定義的成員變量或方法,與子類中同名的成員變量或方法相區(qū)別

11.super和this關(guān)鍵字

1)super:表示指向父類的引用

2)this:表示指向本類的引用

12.protected:受保護(hù)的,,子類看見,,包內(nèi)可見


publc > protected > default > private

13.方法的覆蓋(重寫):override

1)定義:子類繼承父類后,子類對(duì)繼承來(lái)的方法進(jìn)行改造

2)規(guī)則:

a)名稱相同

b)參數(shù)列表相同

c)返回值相同(隱含返回子類也可以,,因?yàn)樽宇惪梢蕴娲割悾?/p>

Animal call()  

Dog call()

d)子類覆蓋方法的訪問(wèn)權(quán)限不小于父類被覆蓋方法的訪問(wèn)權(quán)限

3)@Override:作用是讓編譯器檢查該方法是否是父類方法的重寫

14.引用數(shù)據(jù)類型的轉(zhuǎn)換

1)向上轉(zhuǎn)型:把子類轉(zhuǎn)換為父類,,自動(dòng)轉(zhuǎn)換

前提:具有繼承或?qū)崿F(xiàn)關(guān)系

影響:向上轉(zhuǎn)型損失了子類新擴(kuò)展的屬性和方法,只可以使用從父類繼承的屬性和方法

作用:對(duì)子類進(jìn)行統(tǒng)一管理

2)向下轉(zhuǎn)型:將父類的對(duì)象顯示地轉(zhuǎn)換為子類類型,,要進(jìn)行強(qiáng)制轉(zhuǎn)換

子類對(duì)象 = (子類)父類對(duì)象

Animal a = new Animal();

Dog dog = (Dog)a;


注意:一般先向上轉(zhuǎn)型,,再向下轉(zhuǎn)型,沒有異常

      否則,,直接轉(zhuǎn)換,,有異常

  

  


1.繼承:

1)子類繼承了除構(gòu)造方法之外的所有屬性和方法

2)好處:代碼重用

3)extends

2.重寫:對(duì)父類方法的改造

1)名稱相同

2)參數(shù)列表相同

3)返回值相同

4)訪問(wèn)修飾符大于等于父類的方法

3.子類實(shí)例化的過(guò)程:先實(shí)例化父類,再實(shí)例化子類

4.super

1)super():調(diào)用父類的構(gòu)造方法

2)super.父類的屬性或方法

5.引用類型的轉(zhuǎn)換

1)向上轉(zhuǎn)型:把子類轉(zhuǎn)換為父類,,自動(dòng)轉(zhuǎn)換

2)向下轉(zhuǎn)型:將父類的對(duì)象顯示地轉(zhuǎn)換為子類類型,,要進(jìn)行強(qiáng)制轉(zhuǎn)換

15.instanceof(比較運(yùn)算符)

定義:用來(lái)測(cè)試一個(gè)對(duì)象是否為某個(gè)類型的實(shí)例

格式:

對(duì)象名 instanceof 類型,返回boolean類型,,是該類型返回true,,否則返回false

16.多態(tài)(動(dòng)態(tài)綁定、遲綁定,、運(yùn)行期綁定)

1)定義:多種形態(tài),,不同的對(duì)象對(duì)同一個(gè)行為做出不同的響應(yīng)

2)三個(gè)條件:

a)有繼承

b)有重寫

c)父類的引用指向子類對(duì)象

3)動(dòng)態(tài)綁定:

Animal a = new Dog();

a.hitted();

a)編譯時(shí),在Animal中查找hitted()方法

b)如果該方法不是private,、static,、final的,也不是構(gòu)造方法的話,,編譯器生成動(dòng)態(tài)綁定指令,,否則生成靜態(tài)綁定指令

c)運(yùn)行的時(shí)候,jvm發(fā)現(xiàn)是動(dòng)態(tài)綁定指令,根據(jù)a對(duì)象的實(shí)際類型Dog,,先調(diào)用Dog的hitted()方法,如果Dog類中沒有定義hitted()

方法,,則調(diào)用Animal中的hitted()方法

17.面向?qū)ο蟮脑O(shè)計(jì)原則:

對(duì)修改關(guān)閉,,對(duì)擴(kuò)展開放(開閉原則)

18.abstract:抽象的

1)修飾類:抽象類:不能被實(shí)例化的類稱為抽象類

2)作用:讓其他類繼承

3)格式:

abstract class 類名{

}

4)在下列情況下,類必須聲明為abstract

a)當(dāng)一個(gè)類中包含抽象的方法的時(shí)候

b)當(dāng)一個(gè)類繼承了父類的抽象方法,,又沒有全部實(shí)現(xiàn)的時(shí)候

c)當(dāng)一個(gè)類實(shí)現(xiàn)了某個(gè)接口,,有沒有全部實(shí)現(xiàn)抽象的方法的時(shí)候

5)修飾方法,稱為抽象方法:只有方法聲明,,沒有方法實(shí)現(xiàn)的方法

6)作用:讓繼承抽象類的子類去重寫

7)格式:

abstract 返回值類型 方法名(參數(shù)列表);

注意:

a)抽象方法只能寫在抽象的類中

b)抽象方法不能為static

19.final關(guān)鍵字

1)可以修飾的元素

類:不能被繼承

方法:不能被重寫

成員變量或局部變量:不能被改變

a)聲明時(shí)賦值,,或者在構(gòu)造方法中賦值

b)系統(tǒng)不會(huì)對(duì)final成員變量賦予默認(rèn)值

2)常量:

a)static :只有一個(gè)副本

b)final:賦值后不能被改變

c)命名規(guī)范:標(biāo)識(shí)符全部字母大寫,單詞間用下劃線連接


4)語(yǔ)法格式:

[修飾符] interface 接口名{

常量(默認(rèn)修飾符:public static final)

抽象的方法(默認(rèn)修飾符:public abstract)

}

5)通過(guò)類繼承擴(kuò)展接口(實(shí)現(xiàn))

語(yǔ)法:

class 類名 implements 接口名{

}

一個(gè)類可以實(shí)現(xiàn)多個(gè)接口

class 類名 extends 父類 implements 接口1,接口2...{

}

6) 接口可以繼承其他接口

interface 接口名 extends 接口1,接口2...{

}

作用:為一個(gè)接口中添加新的方法聲明,,也可以將幾個(gè)接口合并成一個(gè)接口

7)設(shè)計(jì)原則:針對(duì)接口編程,,而不針對(duì)實(shí)現(xiàn)編程


1.final

修飾類:不能被繼承

修飾方法:不能被重寫

修飾變量:不能被改變

2.接口:interface

作用:

1)被類去實(shí)現(xiàn)

2)實(shí)現(xiàn)了該接口的子類,在接口的功能上是可以替換的

原則:針對(duì)接口編程,,而不針對(duì)實(shí)現(xiàn)編程

21.接口補(bǔ)充:

從jdk8開始,,接口添加了一種新功能-默認(rèn)方法,默認(rèn)方法允許接口方法定義默認(rèn)實(shí)現(xiàn),,而所有子類都將擁有該方法的實(shí)現(xiàn)

好處:提供了一種拓展接口的方法,,而不破壞現(xiàn)有代碼

注意:默認(rèn)方法在子類中是可以被重寫的

jdk8中,接口替代了抽象類中很多功能

interface 接口名{

常量

抽象方法

默認(rèn)方法(default 返回值類型 方法名(參數(shù)列表){})

}

第八章 異常處理


一,、異常

1.定義:運(yùn)行時(shí)發(fā)生的錯(cuò)誤,,而非編譯時(shí)錯(cuò)誤

2.危害:

1)程序被終止

2)內(nèi)存泄漏

二、異常類的繼承關(guān)系

1.異常的繼承樹:

1)Throwable =》Error:指應(yīng)用程序運(yùn)行期間發(fā)生的嚴(yán)重錯(cuò)誤,,如:虛擬機(jī)內(nèi)存耗盡,、堆棧溢出,一般是災(zāi)難性的,,沒有必要使用異常處理機(jī)制處理

=》Exception =》RuntimeException:非檢查性異常(能夠通過(guò)大量測(cè)試,,找出所有異常,使得在正式運(yùn)行期間,,不發(fā)生)

              =》以IOException為代表的一類異常:檢查性異常

三,、異常處理機(jī)制

1.異常如何產(chǎn)生?

在程序運(yùn)行過(guò)程中,如果發(fā)生異常事件,,系統(tǒng)就會(huì)發(fā)出異常報(bào)告,,這時(shí)候系統(tǒng)將生成一個(gè)異常處理對(duì)象,該對(duì)象封裝了異常處理

事件的信息,,并將其提交給java運(yùn)行時(shí)系統(tǒng)

2.異常處理方式:

1)自行處理:

把可能發(fā)生異常的語(yǔ)句封入到try塊中,,而處理異常的語(yǔ)句封入到catch塊中

2)回避異常:

在方法聲明中包含throws語(yǔ)句,通過(guò)潛在的調(diào)用者,來(lái)處理異常

3.try...catch語(yǔ)句

1)catch塊,,是用來(lái)捕獲并處理try塊拋出的異常的代碼塊,,沒有try塊,catch塊不能單獨(dú)存在,,我們可以有多個(gè)catch塊,,

   用來(lái)捕獲不同類型的異常,為了更好的處理

2)每次try塊中拋出異常,,系統(tǒng)會(huì)從上向下往每個(gè)catch塊中傳遞參數(shù),,直到遇到一個(gè)類型匹配的catch塊為止

3)通常在catch塊中處理異常,記錄錯(cuò)誤到日志中,,方便后續(xù)管理

4.finally語(yǔ)句

1)finally語(yǔ)句放在try...catch語(yǔ)句后

2)finally語(yǔ)句中的代碼塊,,不管異常是否發(fā)生,是否被捕獲總是要執(zhí)行

3)即使try和catch代碼塊中使用了return或break語(yǔ)句,,finally語(yǔ)句都要執(zhí)行

4)當(dāng)執(zhí)行System.exit(0);表示退出系統(tǒng),,則finally語(yǔ)句就不會(huì)執(zhí)行

5.throws語(yǔ)句

1)如果一個(gè)方法中的語(yǔ)句塊在運(yùn)行時(shí)可能產(chǎn)生異常,但是不確定如何處理,,則可以在程序方法的聲明后,,使用throws關(guān)鍵字表明,方法中可能有這些異常

2)throws后面可以跟多個(gè)異常,,中間用逗號(hào)分隔

6.throw語(yǔ)句

1)異常是使用throw語(yǔ)句拋出的,,可以使用throw語(yǔ)句引發(fā)明確的異常

2)throw語(yǔ)句用在方法體中,表示拋出異常,,由方法體的語(yǔ)句處理


1.異常:運(yùn)行時(shí)錯(cuò)誤

2.異常處理

1)try

2)catch

3)finally

4)throws

5)throw 異常對(duì)象

3.異常處理類型

Throwable=》Error

         =》Exception=》RuntimeException(非檢查性異常)

=》以IOException為代表(檢查性異常,,必須異常處理)

7.異常對(duì)象的常用方法:

1)getMessage():得到異常的消息

2)printStackTrace():打印棧的跟蹤信息

8.方法調(diào)用堆棧:

定義:方法A調(diào)用方法B的時(shí)候,只有方法B完成的時(shí)候,,方法A才能完成,,先執(zhí)行的方法總是后完成,后執(zhí)行的方法先完成

在方法調(diào)用的堆棧中的某個(gè)方法中的語(yǔ)句拋出異常,,會(huì)導(dǎo)致所有方法都不能正常結(jié)束,。

如果不想出現(xiàn)這種情況,就要使用java的異常處理機(jī)制進(jìn)行處理

9.自定義異常

1)定義:如果java提供的異常類型不能滿足程序設(shè)計(jì)的需要,,可以定義自己的異常類型

2)用戶自定義的異常應(yīng)繼承Exception類或其子類

注意:

a)自定義異常的名稱很重要,,要盡可能反應(yīng)異常功能

b)根據(jù)設(shè)計(jì)需要,決定父類是檢查行異常還是非檢查性異常

c)添加一個(gè)有參數(shù)的構(gòu)造方法,,用來(lái)傳遞異常消息

d)應(yīng)該自己檢測(cè)異常發(fā)生的條件,,拋出異常

第九章 工具類


一、API:應(yīng)用程序編程接口

1.是jdk提供的各種功能的java類

2.使用jdk的幫助文檔

二,、Object類

1.Object類是所有類的超類,,Object類是java語(yǔ)言中唯一一個(gè)沒有父類的類

2.一個(gè)類可以不是Object類的直接子類,,但一定是Object類的子類

3.意義:在Object類中定義的方法,在所有類中都可以使用

4.equals()方法

1)格式:public boolean equals(Object obj)

功能:比較兩個(gè)對(duì)象的引用是否相等


5.hashcode()方法:

格式:public int hashCode()

功能:返回對(duì)象的哈希碼,,一個(gè)對(duì)象的哈希碼是代表對(duì)象的一個(gè)十六進(jìn)制的整數(shù),,比作對(duì)象的身份證號(hào)

  默認(rèn)的哈希碼是一個(gè)對(duì)象的內(nèi)存地址做某種轉(zhuǎn)換得到的,所以不同的對(duì)象有不同的哈希碼

6.toString()方法:

格式:public String toString()

功能:返回 類名@哈希碼


7.注意:

1)一般子類會(huì)重寫以上三個(gè)方法,,表達(dá)實(shí)際意義

2)java規(guī)定:如果調(diào)用equals方法返回兩個(gè)對(duì)象是相等的,,那么這兩個(gè)對(duì)象上調(diào)用hashCode()方法返回的整數(shù)也必須相等

復(fù)習(xí):

1.api:應(yīng)用程序編程接口

2.Object類

1)equals():比較的是對(duì)象的引用

2)hashCode():返回整數(shù)值

3)toString():返回 類名@哈希碼


8.equals和 == 的區(qū)別

1)默認(rèn)情況下(子類沒有重寫equals方法),equals只能比較對(duì)象的引用是否相等,,equals只能比較引用類型,,不能比較基本數(shù)據(jù)類型

   == 既能比較引用類型,,也能比較基本數(shù)據(jù)類型

2)一般類繼承了Object類的equals方法,,會(huì)重寫,不再比較引用的值

三,、包裝類

1.在java中基本數(shù)據(jù)類型變量不認(rèn)為是對(duì)象,,通過(guò)包裝類,將基本數(shù)據(jù)類型看作對(duì)象

2.包裝類中包含了基本數(shù)據(jù)類型的值,,封裝了String和基本數(shù)據(jù)類型之間的相互轉(zhuǎn)換的方法,,還有一些處理這些基本數(shù)據(jù)類型時(shí)有用的屬性和方法

3.每一種基本數(shù)據(jù)類型都有對(duì)應(yīng)的包裝類(char=>Character 、 int=>Integer)

4.基本數(shù)據(jù)類型,,轉(zhuǎn)換為包裝類

int i = 10;Integer n = new Integer(i);

5.字符串通過(guò)構(gòu)造方法轉(zhuǎn)換為包裝類

Integer n = new Integer("10");

6.字符串通過(guò)valueOf()方法轉(zhuǎn)換為基本數(shù)據(jù)類型

Integer n = Integer.valueOf("100");

7.包裝類通過(guò)xxxValue()方法轉(zhuǎn)換為基本數(shù)據(jù)類型

Integer n = new Integer(500);

int i = n.intValue();

8.字符串通過(guò)parseXXX()方法轉(zhuǎn)換為基本數(shù)據(jù)類型

String s = "100";

int i = Integer.parseInt(s);

9.自動(dòng)裝箱和拆箱

自動(dòng)裝箱:把基本數(shù)據(jù)類型轉(zhuǎn)換成對(duì)應(yīng)的包裝類

Integer n = 10;

自動(dòng)拆箱:把包裝中的值取出

Integer n = new Integer("100");

int i = n;


10.把基本數(shù)據(jù)類型轉(zhuǎn)換為字符串:

int n = 100;

Integer i = new Integer(n);

String s = i.toString();

String s2 = n + "";

四,、字符串

1.定義:一組不可改變的unicode字符序列。對(duì)它的任何修改實(shí)際上產(chǎn)生了一個(gè)新的字符串,。

String對(duì)象的內(nèi)容一旦初始化,,就不能再改變。

2.字符串的創(chuàng)建:

1)靜態(tài)方式:使用字面量賦值,,例如:String s = "abc";

兩個(gè)采用靜態(tài)方式創(chuàng)建的字符串,,如果字面量相同,在方法區(qū)的常量池中,,只產(chǎn)生一個(gè)字符串對(duì)象,,即這兩個(gè)字符串變量的引用相同

2)動(dòng)態(tài)方法:使用內(nèi)存分配符(new),例如:String s = new String("abc");

每次在堆內(nèi)存中創(chuàng)建一個(gè)新的字符串

3.字符串的構(gòu)造方法

1)String s = new String();

2)String s = new String(String value);

3)String s = new String(byte[] bytes);

使用平臺(tái)默認(rèn)的字符集解碼字節(jié)數(shù)組,,創(chuàng)建一個(gè)字符串(中文操作系統(tǒng)gbk)

4)String s = new String(byte[] bytes,String charset);

使用指定的字符集解碼字節(jié)數(shù)組,,創(chuàng)建一個(gè)字符串

5)String s = new String(byte[] bytes,int offset,int length,String charset);

把字節(jié)數(shù)組中從offset開始的長(zhǎng)度為length個(gè)字節(jié),使用指定字符集解碼

4.字符串與byte[]之間的轉(zhuǎn)換

getBytes():根據(jù)默認(rèn)的字符集得到字節(jié)數(shù)組

getBytes(String charset):根據(jù)指定的字符集得到字節(jié)數(shù)組

5.使用+操作符連接字符串

6.字符串重寫了equals方法,,用來(lái)比較字符串的內(nèi)容是否相等


7.常用方法:

1.包裝類

1)java中基本數(shù)據(jù)類型不是對(duì)象

2)為每一種基本數(shù)據(jù)類型創(chuàng)建了一個(gè)對(duì)應(yīng)的包裝類

char=》Character    int =》 Integer

3)自動(dòng)裝箱和拆箱

4)字符串與包裝類,、基本數(shù)據(jù)類型的轉(zhuǎn)換

String.valueOf(基本數(shù)據(jù)類型);//把基本數(shù)據(jù)類型轉(zhuǎn)換為字符串

包裝類.parseXXX(字符串);//把字符串轉(zhuǎn)換為基本數(shù)據(jù)類型

2.字符串

1)不可改變的unicode字符序列

2)靜態(tài)創(chuàng)建:String s = "tom";//在方法區(qū)中的字符串常量池

   動(dòng)態(tài)創(chuàng)建:String s = new String("tom");

3)字符串與byte[]轉(zhuǎn)換

String s = new String(byte[]);

Byte[] bs = s.getBytes();

4)常用的方法

五、StringBuffer

1.定義:可以改變的字符序列,,可以動(dòng)態(tài)改變,,不產(chǎn)生額外的對(duì)象

2.構(gòu)造方法:

StringBuffer():創(chuàng)建一個(gè)其中不帶有字符的字符串緩沖區(qū),,初始容量為16個(gè)字符

StringBuffer(int capacity):創(chuàng)建一個(gè)具有指定容量的字符串緩沖區(qū)

StringBuffer(String value):創(chuàng)建一個(gè)指定初始字符串的字符串緩沖區(qū)

3.常用方法:

1)int capacity():得到容量(緩沖區(qū)大小)

2)int length():返回當(dāng)前字符數(shù)

3)append(String value):在原來(lái)字符串的后面追加字符串

4)toString():得到StringBuffer中的字符序列

5)reverse():逆序

6)setCharAt(int index,char c):修改指定索引處的字符

7)delete(int begin,int end):刪除指定區(qū)間的字符串

8)insert(int index,String s):在指定的索引處插入一個(gè)字符串

六,、StringBuilder

1.StringBuilder設(shè)計(jì)用作StringBuffer的簡(jiǎn)單替代,,用在字符串緩沖區(qū)被單線程方法使用的情況

2.其他使用同StringBuffer相同


七、Math類

1.Math類中提供了大量用于數(shù)學(xué)運(yùn)算的方法

2.Math類final類,,不能被繼承

3.Math類中的方法都是靜態(tài)的,,不用創(chuàng)建實(shí)例就可以使用

4.常量:

Math.PI:圓周率

Math.E:自然對(duì)數(shù)的底數(shù)

5.常用方法:

1)abs():求絕對(duì)值

2)ceil(double):天花板,返回大于所給參數(shù)的最小整數(shù),,返回值為double類型

3)floor(double):地板,,返回小于所給定參數(shù)的最大整數(shù),返回值為double類型

4)max(double,double):返回參數(shù)中較大的數(shù)

5)min(double,double):返回參數(shù)中較小的數(shù)

6)random():返回0.0到1.0之間的隨機(jī)數(shù)(大于等于0,,小于1)

7)round(double):返回四舍五入后的整數(shù),,返回值為long類型

8)sqrt(double):開方

八、Date類

1.包:java.util.Date

2.表示特定的瞬間,,精確到毫秒,,在內(nèi)部,保存自1970年1月1日 0:0:00 到某一個(gè)時(shí)刻的間隔毫秒數(shù)

3.getTime():得到內(nèi)部保存的時(shí)間毫秒數(shù)

4.許多方法已過(guò)時(shí)

5.得到當(dāng)前時(shí)間:

new Date()

6.before(Date):判斷當(dāng)前日期是否在給定的日期前,,在之前,,返回true,否則返回false

7.after(Date):判斷當(dāng)前日期是否在給定的日期后,,在之后,,返回true,否則返回false



九,、Calendar類

1.是一個(gè)抽象類

2.常用的日期時(shí)間處理對(duì)象

3.獲取Calendar類的實(shí)例

Calendar c = Calendar.getInstance();//得到當(dāng)前時(shí)間

4.設(shè)置時(shí)間:

set(int year,int month,int day,int hours,int minutes,int seconds)

setTime(Date)

5.獲取指定時(shí)間

get(int field)

6.轉(zhuǎn)為Date

Date d = c.getTime();

7.為給定的日歷字段添加或減去指定的時(shí)間量

add(int field,int num)

十,、SimpleDateFormat(非常重要)

1.所在包:java.text

2.構(gòu)造方法:

SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

3.將格式化的串轉(zhuǎn)換為日期對(duì)象

SimpleDateFormat f = SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String s = "2018-12-17 14:33:29";

Date d  =  f.parse(s);

4.將日期格式化成指定的串

format(new Date())

5.模式字母

M:月

m:分

s:秒

S:毫秒

H:0-23

h:0-11


復(fù)習(xí):

1.StringBuffer和StingBuilder

append()

toString()

2.Math

random()

ceil()

floor()

round()

PI

E

3.java.util.Date

Date date = new Date();

getTime()

before

after

equals

4.Calendar類

抽象類

Calendar.getInstance()


第十章 集合


一、概述

1.集合類也稱為容器類,,用來(lái)存儲(chǔ)對(duì)象

2.在java.util包中

3.與數(shù)組比較

1)數(shù)組定長(zhǎng),,集合大小可以動(dòng)態(tài)調(diào)整

2)數(shù)組中元素可以是基本數(shù)據(jù)類型和引用類型,集合只能存放引用類型元素

4.集合框架

1)Collection接口:無(wú)序,、可重復(fù)

2)List接口:有序(數(shù)據(jù)存入順序與數(shù)據(jù)存儲(chǔ)順序相同),,可重復(fù)(使用equals()判斷)

3)Set接口:無(wú)序(數(shù)據(jù)存入順序與數(shù)據(jù)存儲(chǔ)順序不同),不可重復(fù)

4)Map接口:鍵值對(duì)存儲(chǔ)

5)Itarator接口:對(duì)Collection接口數(shù)據(jù)進(jìn)行遍歷

5.ArrayList:

1)線性順序存儲(chǔ)

2)特性跟數(shù)組相近,,簡(jiǎn)稱:動(dòng)態(tài)數(shù)組

3)構(gòu)造方法:

a)ArrayList():初始容量為10的空集合

b)ArrayList(int capacity):創(chuàng)建一個(gè)初始容量為capacity的空集合

c)ArrayList(Collection): 構(gòu)造一個(gè)包含指定 collection 的元素的列表

4)優(yōu)點(diǎn):隨機(jī)訪問(wèn)速度快(就是根據(jù)索引號(hào)來(lái)訪問(wèn))

5)常用方法:

add(Object):把元素添加到最后

add(int index,Object obj):把元素插入到index位置,,index不能超過(guò)集合的size()

get(int index):根據(jù)索引號(hào)得到對(duì)應(yīng)的元素,返回Object類型

size():得到集合中元素的個(gè)數(shù)

contains(Object obj):判斷集合中是否包含參數(shù)指定的對(duì)象,,包含返回true,,否則返回false(使用equals()方法判斷)

toArray():把集合中的元素導(dǎo)入到數(shù)組中,該方法返回導(dǎo)入的數(shù)組

List asList = Arrays.asList(stu1,stu2,stu3);//把多個(gè)元素一次放入到list集合中

set(int index,Object obj):在指定的位置處,,用參數(shù)obj替換

remove(int index):移除指定位置的元素

remove(Object o):調(diào)用equals()移除參數(shù)指定的單個(gè)對(duì)象

indexOf(Object):查找對(duì)象第一次出現(xiàn)的位置,,返回索引號(hào),,沒有找到返回-1

lastIndexOf(Object):查找對(duì)象最后一次出現(xiàn)的位置,返回索引號(hào),,沒有找到返回-1

iteartor():得到迭代器對(duì)象

6)缺點(diǎn):插入和刪除效率不高

6.Iterator

1)迭代器,,對(duì)Collection接口的元素進(jìn)行遍歷操作

2)所有實(shí)現(xiàn)了Collection接口的集合類都會(huì)有一個(gè)iteartor()的方法,返回實(shí)現(xiàn)了Iteartor接口的對(duì)象

3)是為了遍歷操作設(shè)計(jì)的,,能夠從集合中取出元素和刪除元素,,沒有添加元素的方法

4)單向移動(dòng)

5)方法:

Object next():返回游標(biāo)右邊的元素并將游標(biāo)移動(dòng)到下一個(gè)位置

boolean hasNext():判斷游標(biāo)右邊是否有元素

void remove():刪除游標(biāo)左邊的元素,在執(zhí)行完next操作后,,該操作只能執(zhí)行一次

7.LinkedList

1)數(shù)據(jù)結(jié)構(gòu)使用雙向鏈表,,元素不要求連續(xù)存儲(chǔ)

2)添加了在頭和尾操作的方法

3)優(yōu)點(diǎn):插入和刪除節(jié)點(diǎn)速度快

4)特有的方法:

a)addFirst(Object):把元素插入到第一個(gè)位置處

b)addLast(Object):把元素插入到最后一個(gè)位置處

c)getFirst():得到第一個(gè)元素

d)getLast():得到最后一個(gè)元素

e)removeFirst():移除第一個(gè)元素

f)removeLast():移除最后一個(gè)元素


復(fù)習(xí):

1.集合:容器,存儲(chǔ)對(duì)象

2.與數(shù)組區(qū)別:

1)容量可變

2)只能存放對(duì)象,,不能存儲(chǔ)基本數(shù)據(jù)類型

3.Collection

list:有序,、可重復(fù)

set:無(wú)序、不可重復(fù)

  Map:鍵值對(duì)

4.ArrayList:實(shí)現(xiàn)了List接口,,動(dòng)態(tài)數(shù)組,,元素緊挨著存放

add(Object)

add(int index,Object)

get(int index)

contains(Object)

size()

toArray()




8.泛型的使用

1)非泛型集合的問(wèn)題:

添加對(duì)象的時(shí)候,,對(duì)象被向上轉(zhuǎn)型為Object類型

在從集合中取數(shù)據(jù)的時(shí)候,,需要進(jìn)行強(qiáng)制轉(zhuǎn)換為對(duì)象實(shí)際類型,在運(yùn)行時(shí),,可能會(huì)報(bào)錯(cuò)

2)泛型集合,,在對(duì)象放入集合的時(shí)候,編譯器進(jìn)行類型檢查,,類型不同,,不能放入集合,編譯報(bào)錯(cuò),,

   所以,,在取出數(shù)據(jù)的時(shí)候,不用進(jìn)行類型轉(zhuǎn)換,,直接使用即可

3)泛型也稱為參數(shù)化類型,,它能夠像方法一樣,接收不同類型的參數(shù)

4)泛型集合:

ArrayList<T> 變量名;//T為某種類型

例如:

ArrayList<Student> list = new ArrayList<Student>();

ArrayList<Student> list = new ArrayList<>(); <>//鉆石操作符


9.set集合

1)set的實(shí)現(xiàn)類:HashSet

2)HashSet():創(chuàng)建一個(gè)容量為16的空間

3)常用的方法:

add(T):添加元素

remove(T):移除元素

size():得到元素個(gè)數(shù)

isEmpty():是否為空集合

iteartor():得到迭代器對(duì)象

clear():清空集合元素

contains(T):判斷元素是否存在

10.Collections

1)max(Collection):找出Collection集合中最大值,,要求集合的元素實(shí)現(xiàn)了Comparable接口

2)max(Collection,Comparator):找出Collection集合中最大值,,按照第二個(gè)參數(shù)的比較器進(jìn)行比較

3)sort(List):使用元素的compareTo()方法比較元素大小,并排序

4)sort(List,Comparator)使用比較器中的比較方法來(lái)比較大小,,并排序

11.Map接口:鍵值對(duì)存儲(chǔ),,鍵不能重復(fù),值可以重復(fù),,鍵可以為null

1)HashMap:map的實(shí)現(xiàn)類

2)常用方法:

a)put(K,V):將鍵和值存儲(chǔ)到map集合中,,如果K存在,,替換值

b)V get(K):根據(jù)鍵取值

c)remove(K):根據(jù)鍵移除鍵值對(duì)

d)containsKey(K):判斷是否包含指定的鍵,包含返回true

e)containsValue(V):判斷是否包含指定的值

f)size():得到鍵值對(duì)的數(shù)量

g)Set keySet():得到鍵的集合(為Set類型)

h)Collection values():得到值的集合(為Collection類型)

i)entrySet():得到鍵值對(duì)的集合(為Set類型)


12.集合選擇

1)存儲(chǔ)單個(gè)對(duì)象使用Collection,,存儲(chǔ)鍵值對(duì)使用Map

2)Set內(nèi)元素不能重復(fù),、List內(nèi)元素有序

3)ArrayList和LinkedList的區(qū)別:在于隨機(jī)訪問(wèn)性能ArrayList要好,但LinkedList插入和刪除性能好







復(fù)習(xí):

1.集合:容器類

2.Collection

list

set

  Map

3.ArrayList:元素連續(xù)存儲(chǔ),,動(dòng)態(tài)數(shù)組

特點(diǎn):隨機(jī)訪問(wèn)快

  插入和刪除慢(要移動(dòng)元素)

  LinkedList:雙向鏈表

特點(diǎn):插入和刪除快

  隨機(jī)訪問(wèn)慢

4.HashSet:底層實(shí)現(xiàn)是基于HashMap

5.HashMap:

put(K,V)

get(K)

keySet()

values()

entrySet()

6.泛型集合,,在對(duì)象放入集合的時(shí)候,編譯器進(jìn)行類型檢查,,類型不同,,不能放入集合,編譯報(bào)錯(cuò)




 java8新特性


一,、lambda表達(dá)式

1.lambda表達(dá)式是一個(gè)匿名函數(shù)

2.語(yǔ)法:

(Type1 param1,Type2 param2,...,TypeN paramN)->{

語(yǔ)句塊

return 返回值;

}

3.其實(shí)lambda表達(dá)式的本質(zhì)只是一個(gè)“語(yǔ)法糖”,,由編譯器推斷并幫你轉(zhuǎn)換包裝為常規(guī)的代碼,因此你可以使用更少的代碼實(shí)現(xiàn)同樣的功能

4.lambda表達(dá)式允許你通過(guò)表達(dá)式來(lái)代替函數(shù)式接口(就是一個(gè)有且僅有一個(gè)抽象方法,,但是可以有多個(gè)非抽象方法的接口)



二,、方法引用

1.方法引用可以調(diào)用一個(gè)已存在的方法,可以使用方法引用

2.作用:簡(jiǎn)化lambda表達(dá)式

3.語(yǔ)法:

使用::操作符

例如:String::compareToIgnoreCase

List<String> list = Arrays.asList("apple","Grape","banana","Pear");

//Collections.sort(list,(x,y)->x.compareToIgnoreCase(y));

Collections.sort(list,String::compareToIgnoreCase);

list.forEach(x->System.out.println(x));

list.forEach(System.out::println);

三,、Stream流

1.Stream可以讓你以一種聲明的方式處理數(shù)據(jù)

2.將要處理的元素集合看做一種流,,流在管道中傳輸,就可以在管道的節(jié)點(diǎn)上進(jìn)行處理,,比如:篩選,、排序、聚合

3.生成流:

stream():為集合創(chuàng)建串行流

parallelStream():為集合創(chuàng)建并行流

4.forEach:迭代流中的每一個(gè)元素

list.stream().filter((s)->Integer.parseInt(s) > 50).forEach(System.out::println);

5.map:用于映射每個(gè)元素到對(duì)應(yīng)的結(jié)果

List<Integer> list = Arrays.asList(2,5,4,6,5);

list.stream().map(i->i*i).forEach(System.out::println);

6.filter:用于通過(guò)設(shè)置的條件過(guò)濾出元素

List<Integer> list = Arrays.asList(2,5,4,6,5);

list.stream().map(i->i*i).filter(x->x > 20)

.forEach(System.out::println);

7.limit:用于獲取指定數(shù)量的流

limit(long num)

8.sorted:用戶對(duì)流進(jìn)行排序


9.Collectors類實(shí)現(xiàn)了很多規(guī)約操作,,例如將流轉(zhuǎn)換成集合

toList()

toSet()

joining(String)

String s = list.stream().sorted().map(x->String.valueOf(x)).collect(Collectors.joining(","));

10.統(tǒng)計(jì)

List<Integer> list = Arrays.asList(2,5,4,6,5);

//用于收集統(tǒng)計(jì)數(shù)據(jù)

IntSummaryStatistics s = list.stream().mapToInt(x->x).summaryStatistics();

System.out.println("max="+s.getMax());

System.out.println("min="+s.getMin());

System.out.println("sum="+s.getSum());

System.out.println("avg="+s.getAverage());

System.out.println("count="+s.getCount());


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多