Java語言基礎(chǔ)

1.1.1 基礎(chǔ)語言要素

1)標(biāo)識符:給類奶浦、方法、變量起的名字

A.必須以字母或下劃線或$$符號開始捎迫,其余字符可以是字母晃酒、數(shù)字、$ 符號和下劃線窄绒。

B.只能包含兩個特殊字符贝次,即下劃線 _ 和美元符號 $ 。不允許有任何其他特殊字符彰导。

C.標(biāo)識符不能包含空格蛔翅。

D.區(qū)分大小寫。

2)關(guān)鍵字:只有系統(tǒng)才能用的標(biāo)識符

u 注意事項:

v true位谋、false山析、null不是關(guān)鍵字!是字面量掏父。

v main不是關(guān)鍵字笋轨!但是是一個特殊單詞,可以被JVM識別赊淑,主函數(shù)是固定格式爵政,作為程序的入口。

3)注釋:單行注釋:// 多行注釋:/* ……/ 文檔注釋:/……/

u 注意事項:開發(fā)中類前陶缺、屬性前钾挟、方法前,必須有文檔注視饱岸。

1.1.2 八種基本數(shù)據(jù)類型

1)四種整數(shù)類型(byte掺出、short徽千、int、long):

byte:8位蛛砰,用于表示最小數(shù)據(jù)單位罐栈,如文件中數(shù)據(jù),-128~127

short:16位泥畅,很少用荠诬,-32768 ~ 32767

int:32位、最常用位仁,-231-1~231 (21億)

long:64位柑贞、次常用

u 注意事項:

v int i=5; // 5叫直接量(或字面量),即直接寫出的常數(shù)聂抢。

v 整數(shù)字面量默認(rèn)都為int類型钧嘶,所以在定義的long型數(shù)據(jù)后面加L或l。

v 小于32位數(shù)的變量琳疏,都按int結(jié)果計算有决。

v 強轉(zhuǎn)符比數(shù)學(xué)運算符優(yōu)先級高。見常量與變量中的例子空盼。

2)兩種浮點數(shù)類型(float书幕、double):

float:32位,后綴F或f揽趾,1位符號位台汇,8位指數(shù),23位有效尾數(shù)篱瞎。

double:64位苟呐,最常用,后綴D或d俐筋,1位符號位牵素,11位指數(shù)筒占,52位有效尾數(shù)簸呈。

u 注意事項:

v 二進制浮點數(shù):1010100010=101010001.02=10101000.10210(2次方)=1010100.010*211(3次方)= . 1010100010*2^1010(10次方)

v 尾數(shù): . 1010100010 指數(shù):1010 基數(shù):2

v 浮點數(shù)字面量默認(rèn)都為double類型川慌,所以在定義的float型數(shù)據(jù)后面加F或f扁誓;double類型可不寫后綴,但在小數(shù)計算中一定要寫D或X.X噪生。

v float 的精度沒有l(wèi)ong高,有效位數(shù)(尾數(shù))短。

v float 的范圍大于long 指數(shù)可以很大抱怔。

v 浮點數(shù)是不精確的,不能對浮點數(shù)進行精確比較嘀倒。

3)一種字符類型(char):

char:16位屈留,是整數(shù)類型局冰,用單引號括起來的1個字符(可以是一個中文字符),使用Unicode碼代表字符灌危,0~2^16-1(65535)康二。

u 注意事項:

v 不能為0個字符。

v 轉(zhuǎn)義字符:\n 換行 \r 回車 \t Tab字符 " 雙引號 \ 表示一個\

v 兩字符char中間用“+”連接勇蝙,內(nèi)部先把字符轉(zhuǎn)成int類型沫勿,再進行加法運算,char本質(zhì)就是個數(shù)味混!二進制的产雹,顯示的時候,經(jīng)過“處理”顯示為字符翁锡。

4)一種布爾類型(boolean):true真 和false假蔓挖。

5)類型轉(zhuǎn)換: char-->

自動轉(zhuǎn)換:byte-->short-->int-->long-->float-->double

強制轉(zhuǎn)換:①會損失精度,產(chǎn)生誤差馆衔,小數(shù)點以后的數(shù)字全部舍棄瘟判。

②容易超過取值范圍。

1.1.3 常量和變量

變量:內(nèi)存中一塊存儲空間角溃,可保存當(dāng)前數(shù)據(jù)拷获。在程序運行過程中,其值是可以改變的量开镣。

1)必須聲明并且初始化以后使用(在同一個作用域中不能重復(fù)聲明變量)刀诬!

2)變量必須有明確類型(Java是強類型語言)。

3)變量有作用域(變量在聲明的地方開始邪财,到塊{}結(jié)束)陕壹。變量作用域越小越好。

4)局部變量在使用前一定要初始化树埠!成員變量在對象被創(chuàng)建后有默認(rèn)值糠馆,可直接用。

5)在方法中定義的局部變量在該方法被<u>加載</u>時創(chuàng)建怎憋。

常量:在程序運行過程中又碌,其值不可以改變的量。

u 注意事項:

v 字面量绊袋、常量和變量的運算機制不同毕匀,字面量、常量由編譯器計算癌别,變量由運算器處理皂岔,目的是為了提高效率。

eg:小于32位數(shù)的字面量處理


//byte b3 = b1+b2;//編譯錯誤展姐,按照int結(jié)果躁垛,需要強制轉(zhuǎn)換

byte b3 = (byte)(b1+b2);

//byte b3 = (byte)b1+(byte)b2;//編譯錯誤剖毯!兩個byte、short教馆、char相加還是按int算

System.out.println(b3); //選擇結(jié)果:A編譯錯誤B運行異常 C 4 D b3

byte b4 = 1+3;//字面量運算逊谋,編譯期間替換為4,字面量4

//byte b4 = 4; 不超過byte就可以賦值

v 不管是常量還是變量土铺,必須先定義胶滋,才能夠使用。即先在內(nèi)存中開辟存儲空間舒憾,才能夠往里面放入數(shù)據(jù)镀钓。

v 不管是常量還是變量,其存儲空間是有數(shù)據(jù)類型的差別的镀迂,即有些變量的存儲空間用于存儲整數(shù)丁溅,有些變量的存儲空間用于存儲小數(shù)。

1.1.4 運算符與表達式

1)數(shù)學(xué)運算:+ - * / % ++ --

u 注意事項:

v + - * / 兩端的變量必須是同種類型探遵,并返回同種類型窟赏。

v % 取余運算,負(fù)數(shù)的余數(shù)符號與被模數(shù)符號相同箱季, - 1 % 5 = - 1涯穷,1 % - 5 = 1;Num % n藏雏,n>0拷况,結(jié)果范圍[0,n),是周期函數(shù)掘殴。

v 注意整除問題:1 / 2 = 0(整數(shù)的除法是整除)1.0 / 2 = 0.5 1D / 2 = 0.5

v 單獨的前赚瘦、后自增或自減是沒區(qū)別的,有了賦值語句或返回值奏寨,則值不同起意!

eg1:自增自減


第1步:后++,先確定表達式a++的值(當(dāng)前a的值) a++ ---->1

第2步:++病瞳,給a加1       a ---->2

第3步:最后賦值運算,把a++整個表達式的值賦值給a a ---->1

a被賦值兩次揽咕,第1次a = 2,第2次把1賦值給1

eg2:自增自減

x套菜,y亲善,z分別為5,6逗柴,7 計算z + = -- y * z++ 蛹头;// x = 5,y = 5,z = 42

z = z + -- y * z++ à 42 = 7 + 5 * 7 從左到右入棧掘而,入的是值

eg3:取出數(shù)字的每一位

  d = num%10;//獲取num的最后一位數(shù)  num/=10; //消除num的最后一位

2)位運算:& | ~(取反) ^(異或)>> << >>>

u 注意事項:

v 一個數(shù)異或同一個數(shù)兩次,結(jié)果還是那個數(shù)于购。

v |:上下對齊袍睡,有1個1則為1;&:上下對齊肋僧,有1個0則為0斑胜;(都為二進制)

v &相當(dāng)于乘法,| 相當(dāng)于加法嫌吠;&:有0則為0止潘,| :有1則為1,^:兩數(shù)相同為0辫诅,不同為1凭戴。

3)關(guān)系運算符:> < >= <= == !=

4)邏輯運算符:&& ||(短路) ! & |

eg:短路運算:&&:前為flase,則后面不計算炕矮;|| :前為true么夫,則后面不計算

int x=1,y=1,z=1;

if(x--==1 && y++==1 || z++==1) // || 短路運算后面的不執(zhí)行了!

System.out.println(“x=”+x+”,y=”+y+”,z=”+z);// 0 , 2, 1

5)賦值運算符:= += -= *= /= %=

eg:正負(fù)1交替

int flag= -1; System.out.println(flag *= -1); ……

6)條件(三目)運算符:表達式1 肤视? 表達式2 :表達式3

u 注意事項:

v 右結(jié)合性:a > b ? a : i > j ? i : j 相當(dāng)于 a > b ? a : ( i > j ? i : j )

v 三目運算符中:第二個表達式和第三個表達式中如果都為基本數(shù)據(jù)類型档痪,整個表達式的運算結(jié)果由容量高的決定。如:int x = 4; x > 4 ? 99.9 : 9;

99.9是double類型邢滑,而9是int類型腐螟,double容量高,所以最后結(jié)果為9.9困后。

7) 運算符優(yōu)先級:括號 > 自增自減 > ~ ! > 算數(shù)運算符 > 位移運算 > 關(guān)系運算 > 邏輯運算 > 條件運算 > 賦值運算

1.1.5 編程風(fēng)格

MyEclipse/Eclipse中出現(xiàn)的紅色叉叉:編譯錯誤

編譯錯誤:java編譯器在將Java源代碼編譯為class文件的過程出現(xiàn)的錯誤乐纸,一般是語法使用錯誤!當(dāng)有編譯錯誤時候操灿,是沒有class文件產(chǎn)生锯仪,也就不能運行程序。

Java 程序結(jié)構(gòu):

image.png

1.1.6 流程控制語句

1)選擇控制語句

if語句:if 趾盐、if-else庶喜、if-else-if:可以處理一切分支判斷。

格式:if(判斷){…}救鲤、if(判斷){…}else{…}久窟、if(判斷){…}else if(判斷){…}

switch語句:switch(必須整數(shù)類型){case 常量1:…; case 常量2:… ; ….}

u 注意事項:

v int類型指:byte、short本缠、int斥扛,只能寫long類型,要寫也必須強轉(zhuǎn)成int類型;而byte稀颁、short為自動轉(zhuǎn)換成int芬失。

v swtich-case:若case中無符合的數(shù),并且default寫在最前(無break時)匾灶, 則為順序執(zhí)行棱烂,有break或 } 則退出。

v swtich-case:若case中無符合的數(shù)阶女,并且default寫在最后颊糜,則執(zhí)行default。

v swtich-case:若case中有符合的數(shù)秃踩,并且default寫在最后衬鱼,并且default前面的case沒有break時,default也會執(zhí)行憔杨。

2)循環(huán)控制語句

①for:最常用鸟赫,用在與次數(shù)有關(guān)的循環(huán)處理,甚至只用for可以解決任何循環(huán)問題消别。

u 注意事項:for中定義的用于控制次數(shù)的循環(huán)變量惯疙,只在for中有效,for結(jié)束則循環(huán)變量被釋放(回收)妖啥。

②while:很常用霉颠,用在循環(huán)時候要先檢查循環(huán)條件再處理循環(huán)體,用在與次數(shù)無關(guān)的情況荆虱。如果不能明確結(jié)束條件的時候蒿偎,先使用while(true),在適當(dāng)條件使用if語句加break結(jié)束循環(huán)怀读。

③do-while:在循環(huán)最后判斷是否結(jié)束的循環(huán)诉位。如:使用while(true) 實現(xiàn)循環(huán)的時候,結(jié)束條件break在while循環(huán)體的最后菜枷,就可以使用 do-while 苍糠。do-while 的結(jié)束條件經(jīng)常是“否定邏輯條件”,不便于思考業(yè)務(wù)邏輯啤誊,使用的時候需要注意岳瞭。可以利用while(true)+ break 替換蚊锹。

④循環(huán)三要素:A.循環(huán)變量初值 B.循環(huán)條件 C.循環(huán)變量增量(是循環(huán)趨于結(jié)束的表達式)

⑤for和while循環(huán)體中僅一條語句瞳筏,也要補全{ },當(dāng)有多條語句牡昆,且不寫{ }時姚炕,它們只執(zhí)行緊跟著的第一條語句。

⑥循環(huán)的替換:

 while(布爾表達式){} 等價 for(;布爾表達式;){}

while(true){} 等價 for(;;)

while(true){} + break 替換 do{}while(布爾表達式);

for(;;) + break 替換 do{}while(布爾表達式);

3)跳轉(zhuǎn)控制語句

continue:退出本次循環(huán),直接執(zhí)行下一次循環(huán)

break:退出所有循環(huán)

1.1.7 數(shù)組

類型一致的一組數(shù)據(jù)柱宦,相當(dāng)于集合概念些椒,在軟件中解決一組,一堆XX數(shù)據(jù)時候使用數(shù)組掸刊。

1)數(shù)組變量:是引用類型變量(不是基本變量)引用變量通過數(shù)組的內(nèi)存地址位置引用了一個數(shù)組(數(shù)組對象)摊沉,即栓到數(shù)組對象的繩子。

eg:數(shù)組變量的賦值

 int[] ary = new int[3];// ary----->{0,0,0}<----ary1

 int[] ary1 = ary;// ary 的地址賦值給ary1痒给,ary 與 ary1 綁定了同一個數(shù)組

 //ary[1] 與 ary1[1] 是同一個元素,數(shù)組變量不是數(shù)組(數(shù)組對象)

2)數(shù)組(數(shù)組對象)有3種創(chuàng)建(初始化)方式:①new int[10000] 給元素數(shù)量骏全,適合不知道具體元素苍柏,或元素數(shù)量較多時 ②new int[]{3,4,5} 不需要給出數(shù)量,直接初始化具體元素適合知道數(shù)組的元素姜贡。③ {2,3,4} 靜態(tài)初始化试吁,是②簡化版,只能用在聲明數(shù)組變量的時候直接初始化楼咳,不能用于賦值等情況熄捍。

eg:數(shù)組初始化

  int[] ary1 = new int[]{2,3,4};//創(chuàng)建數(shù)組時候直接初始化元素

  int[] ary2 = {2,3,4};//數(shù)組靜態(tài)初始化,只能在聲明變量的同時直接賦值

  //ary2 = {4,5,6};//編譯錯誤母怜,不能用于賦值等情況

  ary2 = new int[]{4,5,6};

3)數(shù)組元素的訪問:①數(shù)組長度:長度使用屬性訪問余耽,ary.length 獲取數(shù)組下標(biāo)。②數(shù)組下標(biāo):范圍:0 ~ length-1就是[0,length)苹熏,超范圍訪問會出現(xiàn)下標(biāo)越界異常碟贾。③使用[index] 訪問數(shù)組元素:ary[2]。④迭代(遍歷):就是將數(shù)組元素逐一處理一遍的方法轨域。

4)數(shù)組默認(rèn)初始化值:根據(jù)數(shù)組類型的不同袱耽,默認(rèn)初始化值為:0(整數(shù))、0.0(浮點數(shù))干发、false(布爾類型)朱巨、\u0000(char字符類型,顯示無效果枉长,相當(dāng)于空格冀续,編碼為0的字符,是控制字符必峰,強轉(zhuǎn)為int時顯示0)沥阳、null(string類型,什么都沒有自点,空值的意思)桐罕。

5)數(shù)組的復(fù)制:數(shù)組變量的賦值,是并不會復(fù)制數(shù)組對象,是兩個變量引用了同一個數(shù)組對象功炮。數(shù)組復(fù)制的本質(zhì)是創(chuàng)建了新數(shù)組溅潜,將原數(shù)組的內(nèi)容復(fù)制過來。

6)數(shù)組的擴容:創(chuàng)建新數(shù)組薪伏,新數(shù)組容量大于原數(shù)組滚澜,將原數(shù)組內(nèi)容復(fù)制到新數(shù)組,并且丟棄原數(shù)組嫁怀,簡單說:就是更換更大的數(shù)組對象设捐。System.arraycopy() 用于復(fù)制數(shù)組內(nèi)容,簡化版的數(shù)組復(fù)制方法:Arrays.copyOf()方法塘淑,但需JKD1.5+萝招。

1.1.8 字符串

字符串(string):永遠用“”雙引號(英文狀態(tài)下),用字符串連接任何數(shù)據(jù)(整數(shù))存捺,都會默認(rèn)的轉(zhuǎn)化為字符串類型槐沼。

字符串與基本數(shù)據(jù)類型鏈接的問題:如果第一個是字符串那么后續(xù)就都按字符串處理,如System.out.println("(Result)"+6 + 6 );那么結(jié)果就是(Result)66捌治,如果第一個和第二個…第n個都是基本數(shù)據(jù)岗钩,第n+1是字符串類型,那么前n個都按加法計算出結(jié)果在與字符串連接肖油。如下例中的System.out.println(1+2+”java”+3+4);結(jié)果為3java34兼吓。

eg:字符串前后的“+”都是連接符!不是加法運算符森枪!

System.out.println("A"+'B');//AB

System.out.println('A'+'B');//131

System.out.println(1+2+”java”+3+4);//3java34

u 注意事項:比較字符串是否相等必須使用equals方法周蹭!不能使用==。"1".equals(cmd) 比cmd.equals("1") 要好疲恢。

1.1.9 方法三要素

方法:method(函數(shù)function = 功能) y=f(x)

1)方法的主要三要素:方法名凶朗、參數(shù)列表、返回值显拳。

2)什么是方法:一個算法邏輯功能的封裝棚愤,是一般完成一個業(yè)務(wù)功能,如:登錄系統(tǒng)杂数,創(chuàng)建聯(lián)系人宛畦,簡單說:方法是動作,是動詞揍移。

3)方法名:一般按照方法實現(xiàn)的功能定名次和,一般使用動詞定義,一般使用小寫字母開頭那伐,第二個單詞開始踏施,單詞首字母大寫石蔗。如:createContact() 。

4)參數(shù)列表:是方法的前提條件畅形,是方法執(zhí)行依據(jù)养距,是數(shù)據(jù)。如:

login(String id, String pwd) 日熬,參數(shù)的傳遞看定義的類型及順序棍厌,不看參數(shù)名。

5)方法返回值:功能執(zhí)行的結(jié)果竖席,方法必須定義返回值耘纱,并且方法中必須使用return語句返回數(shù)據(jù);如果無返回值則定義為void毕荐,此時return語句可寫可不寫束析;返回結(jié)果只能有一個,若返回多個結(jié)果东跪,要用數(shù)組返回(返回多個值)。

u 注意事項:遞歸調(diào)用:方法中調(diào)用了方法本身鹰溜,用遞歸解決問題比較簡練虽填,只需考慮一層邏輯即可!但是需要有經(jīng)驗曹动。一定要有結(jié)束條件斋日!如:f(1)=1; 遞歸層次不能太深∧钩拢總之:慎用遞歸恶守!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贡必,隨后出現(xiàn)的幾起案子兔港,更是在濱河造成了極大的恐慌,老刑警劉巖仔拟,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衫樊,死亡現(xiàn)場離奇詭異,居然都是意外死亡利花,警方通過查閱死者的電腦和手機科侈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炒事,“玉大人臀栈,你說我怎么就攤上這事∧尤椋” “怎么了权薯?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵姑躲,是天一觀的道長。 經(jīng)常有香客問我崭闲,道長肋联,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任刁俭,我火速辦了婚禮橄仍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牍戚。我一直安慰自己侮繁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布如孝。 她就那樣靜靜地躺著宪哩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪第晰。 梳的紋絲不亂的頭發(fā)上锁孟,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音茁瘦,去河邊找鬼品抽。 笑死,一個胖子當(dāng)著我的面吹牛甜熔,可吹牛的內(nèi)容都是我干的圆恤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腔稀,長吁一口氣:“原來是場噩夢啊……” “哼盆昙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起焊虏,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淡喜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后诵闭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拆火,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年涂圆,在試婚紗的時候發(fā)現(xiàn)自己被綠了们镜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡润歉,死狀恐怖模狭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踩衩,我是刑警寧澤嚼鹉,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布贩汉,位于F島的核電站,受9級特大地震影響锚赤,放射性物質(zhì)發(fā)生泄漏匹舞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一线脚、第九天 我趴在偏房一處隱蔽的房頂上張望赐稽。 院中可真熱鬧,春花似錦浑侥、人聲如沸姊舵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽括丁。三九已至,卻和暖如春伶选,著一層夾襖步出監(jiān)牢的瞬間史飞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工仰税, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留构资,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓肖卧,卻偏偏與公主長得像蚯窥,于是被迫代替她去往敵國和親掸鹅。 傳聞我的和親對象是個殘疾皇子塞帐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355