基礎(chǔ)
1.變量
理解為對存儲數(shù)據(jù)的操作,需要指明類型和變量名凌简,使用前需要初始化
2.基本類型
分為:整數(shù)(byte,short恃逻,int雏搂,long)
浮點(float,double)
Char
Boolean
2.1Int:正負21億左右寇损;相除是舍棄尾數(shù)凸郑;結(jié)果過大會溢出,正變負矛市,負變正芙沥;0X開頭是16進制,0開頭是8進制浊吏。
2.2Long:大小-2e(64-1)~~2e(63-1)
-1而昨;直接賦值需要在值后面加上l;計算大數(shù)據(jù)在后
2.3Double和float:默認小數(shù)為double找田;double是float的兩倍歌憨,所以叫double;十進制對于1/10表示會有誤差墩衙,所以需要精確計算需要BigDecimal务嫡;
2.4Char:實際為一個非負正數(shù);
2.5Boolean:只有true和false漆改;
2.6基本類型間的轉(zhuǎn)換:
整數(shù)直接量可以直接復(fù)制給byte, short,
char ,他們參與運算直接轉(zhuǎn)換為int類型心铃。
基本類型的轉(zhuǎn)換: 隱式(從小到大)強制(從大到小)
隱式的:多種類型之間運算時,自動從小的類型轉(zhuǎn)換為大的類型;
byte,char挫剑,short運算時都先轉(zhuǎn)換為int類型再運算
強制轉(zhuǎn)換:(需要轉(zhuǎn)換的類型)變量 有可能精度損失或則溢出
3.運算符號
3.1運算符號:%(取模)去扣,++,--(放在前面是先自增樊破,放在后面是使用后在自增)
3.2關(guān)系符:<,
>, >=, <=, ==, != , &&(第一個為false就不再計算), !, ||(第一個為true就不再計算)厅篓。
3.3賦值運算符:” =”將右邊的值賦值給左邊秀存。在前面加上其他運算符則為擴展運算符如:+=,-=等羽氮,其運算效率比較高或链;
3.4+:除了運算可以實現(xiàn)字符串連接;快速賦值為字符串档押,其他類型連接:+“”澳盐;
3.5條件(三木)運算:boolean表達式?表達式1:表達式2。計算boolean表達式令宿,為true則結(jié)果是表達式1叼耙,是false則結(jié)果是表達式2條件運算符可以嵌套使用String r =
a > 0 ? "正數(shù)" : (a == 0 ?
"0":"負數(shù)");
注意:浮點計算不能用double二進制無法準(zhǔn)確的表示1/10
計算后的類型轉(zhuǎn)換:byte b2 =
(byte)(b1+b2);不能寫成:byte b2 =(byte)b1+b2;
4.條件選擇
4.1任何復(fù)雜的邏輯順序都可以通過順序,分支粒没,循環(huán)三種基本的程序結(jié)構(gòu)實現(xiàn)
4.2分支
4.2.1If筛婉;
4.2.2if
else;
4.2.3switch
1.7之前是只能整型癞松,之后是可以string和char
swith() {
case整型常量值1: 語句1爽撒; 不加break會穿透(根據(jù)考慮使用);
……
default:語句n响蓉;
}
switch的本意是符合就執(zhí)行所有后面語句代碼硕勿;
4.3循環(huán)
4.3.1While ( Boolean ){語句}和do {語句}while ( Boolean ) ;在于是否必須要執(zhí)行執(zhí)行語句;
4.3.2For: for(循環(huán)變量初始狀態(tài)1 ;循環(huán)條件2 ;循環(huán)條件的改變3 ){}
計算表達式1的值枫甲,通常為循環(huán)變量賦初值源武;
計算表達式2(表達式2為邏輯表達式)的值,即判斷循環(huán)條件是否為真想幻,若值為真則執(zhí)行循環(huán)體一次(語句塊)粱栖,否則跳出循環(huán);
執(zhí)行循環(huán)體脏毯;
計算表達式3的值查排,此處通常寫更新循環(huán)變量的賦值表達式;如此循環(huán)往復(fù)抄沮,直到表達式2的值為false跋核。
for語句通常用于解決固定次數(shù)循環(huán)的處理,它的三個參數(shù)都可以設(shè)置為空叛买,但是“砂代;”號不能少,表達式1率挣,和表達式3都可以設(shè)置多個語句用“刻伊,”分開。直到……這樣的語句是,優(yōu)先選擇do-while語句來實現(xiàn)捶箱;
4.3.3break和continue
1.break用于循環(huán)和switch表示跳出循環(huán)執(zhí)行后面的語句智什。break只能跳出一層循環(huán)。
2.continue只能用于循環(huán)表示跳出此次循環(huán)體中剩余的語句執(zhí)行下次循環(huán)丁屎。
5.集合
5.1數(shù)組:為相同元素的集合荠锭,按線性順序排列,每一個元素都有唯一的前驅(qū)元素晨川;除最后一個元素外证九,每一個元素都有唯一的后繼元素(“一個跟一個”),可以通過元素所在位置的順序號(下標(biāo))做標(biāo)識訪問每一個元素(下標(biāo)從0開始共虑,最大到元素個數(shù)-1)愧怜,數(shù)組創(chuàng)建后長度不可改變。
5.1.1申明
數(shù)組類型[]數(shù)組名= new數(shù)據(jù)類型[大小]妈拌;
確切數(shù)據(jù)類型:用于分配空間拥坛;數(shù)組名:用于后面引用;new用于創(chuàng)建數(shù)組尘分,需要指定大小猜惋,數(shù)組大小指定后不可變;
5.1.2初始化:
基本類型在數(shù)組創(chuàng)建后會被賦予初始值音诫,0惨奕;0.0雪位;false等竭钝;
手動賦值:int [ ] arr = { 10,23,30,-10,21 } ;這種寫法只適合與聲明的時候,聲明之后再這樣賦值是不可以的雹洗。int[] arr;arr = new int[]{10,23,30,-10,21 };聲明之后的寫法香罐;
注意:new之后的[]中不可以寫長度,而元素的個數(shù)就是數(shù)組的長度时肿。
5.1.3數(shù)組的復(fù)制
1. System.arraycopy(Object src,int srcPso, Object src, int srcPso,int length)
參數(shù)的意義:源數(shù)組庇茫,起始位置,目標(biāo)數(shù)組螃成,目標(biāo)數(shù)組中的起始位置旦签,長度
2. Arrays.copyOf(數(shù)組的引用,int newLength)返回值為一個數(shù)組寸宏,多出的長度用默認值補齊宁炫。
5.1.4數(shù)組的排序:Arrays.sort();
5.1.5數(shù)組的排序:Arrays.toString()可以打印數(shù)組氮凝;
6.類
6.1引用
6.1.1除了8種基本類型的變量外其他都是引用類型的變量羔巢;
6.1.2引用:使用new的時候創(chuàng)建,Object obj = new Object();創(chuàng)建引用obj,new后面的是調(diào)用的類的構(gòu)造方法竿秆;還可以通過賦值的方式創(chuàng)建:Object obj = object启摄;此時創(chuàng)建引用obj,但是他和object指向同一個對象幽钢;
6.2方法:方法名和參數(shù)列表一個類中不可能有兩個方法簽名相同的方法
6.2.1構(gòu)造方法與類同名歉备,沒有返回值類型有訪問修飾符;
構(gòu)造方法常常給成員變量初始化
造方法在創(chuàng)建對象時被自動調(diào)用的
JAVA語法規(guī)定搅吁,任何一個類都必須含有構(gòu)造方法威创,假如源程序中沒有定義,則編譯器在編譯時將為其添加一個無參的空構(gòu)造方法谎懦,當(dāng)類定義了構(gòu)造方法后肚豺,Java編譯器將不再添加默認的構(gòu)造方法
構(gòu)造方法可以重載
6.2.2方法重載:方法名相同,但是方法參數(shù)不一樣界拦;
重寫是子類對父類的允許訪問的方法的實現(xiàn)過程進行重新編寫,返回值和形參都不能改變吸申。即外殼不變,核心重寫享甸!
重寫的好處在于子類可以根據(jù)需要截碴,定義特定于自己的行為。也就是說子類能夠根據(jù)需要實現(xiàn)父類的方法蛉威。
重寫方法不能拋出新的檢查異橙盏ぃ或者比被重寫方法申明更加寬泛的異常。例如:父類的一個方法申明了一個檢查異常IOException蚯嫌,但是在重寫這個方法的時候不能拋出Exception異常哲虾,因為Exception是IOException的父類,只能拋出IOException的子類異常择示。
參數(shù)列表必須完全與被重寫方法的相同束凑;
返回類型必須完全與被重寫方法的返回類型相同;
訪問權(quán)限不能比父類中被重寫的方法的訪問權(quán)限更低栅盲。例如:如果父類的一個方法被聲明為public汪诉,那么在子類中重寫該方法就不能聲明為protected。
父類的成員方法只能被它的子類重寫谈秫。
聲明為final的方法不能被重寫扒寄。
聲明為static的方法不能被重寫,但是能夠被再次聲明拟烫。
子類和父類在同一個包中该编,那么子類可以重寫父類所有方法,除了聲明為private和final的方法构灸。
子類和父類不在同一個包中上渴,那么子類只能夠重寫父類的聲明為public和protected的非final方法岸梨。
重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常稠氮。但是曹阔,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常隔披,反之則可以赃份。
構(gòu)造方法不能被重寫。
如果不能繼承一個方法奢米,則不能重寫這個方法
Super關(guān)鍵字的使用
當(dāng)需要在子類中調(diào)用父類的被重寫方法時抓韩,要使用super關(guān)鍵字。
6.2.3方法重寫
重載(overloading)是在一個類里面鬓长,方法名字相同谒拴,而參數(shù)不同。返回類型可以相同也可以不同涉波。
每個重載的方法(或者構(gòu)造函數(shù))都必須有一個獨一無二的參數(shù)類型列表英上。
只能重載構(gòu)造函數(shù)
重載規(guī)則
被重載的方法必須改變參數(shù)列表(參數(shù)個數(shù)或類型或順序不一樣)涝滴;
被重載的方法可以改變返回類型通铲;
被重載的方法可以改變訪問修飾符钧惧;
被重載的方法可以聲明新的或更廣的檢查異常祠墅;
方法能夠在同一個類中或者在一個子類中被重載。
無法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)榨惠。
6.2.4重寫與重載之間的區(qū)別
區(qū)別點重載方法重寫方法
參數(shù)列表必須修改一定不能修改
返回類型可以修改一定不能修改
異扯勐可以修改可以減少或刪除距淫,一定不能拋出新的或者更廣的異常
訪問可以修改一定不能做更嚴格的限制(可以降低限制)
6.2.5總結(jié)
方法的重寫(Overriding)和重載(Overloading)是java多態(tài)性的不同表現(xiàn)笨觅,重寫是父類與子類之間多態(tài)性的一種表現(xiàn)拦耐,重載是一類中多態(tài)性的一種表現(xiàn)。