2018-09-20 Java基礎(chǔ)語法
[TOC]
注釋
單行注釋
多行注釋
文檔注釋
- 這種方法注釋的內(nèi)容會被解釋成程序的正式文檔堤瘤,并能包含進(jìn)如javadoc之類的工具生成的文檔里,用于說明該程序的層次結(jié)構(gòu)及其辦法
標(biāo)識符和關(guān)鍵字
標(biāo)識符
- 定義名稱的都為標(biāo)識符津函,如文件名稱蛉幸、類方法破讨、方法名稱或變量名稱
- 建議:標(biāo)識符最好永遠(yuǎn)用字母開頭
-
沒必要去強記Java 關(guān)鍵字,會隨著學(xué)習(xí)逐步認(rèn)知
數(shù)據(jù)類型
- 具有重要地位
-分為基本數(shù)據(jù)類型與引用數(shù)據(jù)類型 - 基本數(shù)據(jù)類型不牽扯內(nèi)存的開辟問題巨缘,引用類型牽扯到內(nèi)存的開辟
- 數(shù)據(jù)類型的劃分以及數(shù)據(jù)類型的名稱都要求記住
基本數(shù)據(jù)類型
- 幾下各個基本數(shù)據(jù)類型的默認(rèn)值記住添忘,同時還需要記住byte表示的范圍采呐、double保存的數(shù)據(jù)長度為最大(默認(rèn)值若锁、范圍)
浮點數(shù)(復(fù)習(xí))
- 單精度浮點數(shù)(32位) 1+7+24位
- 尾數(shù)實際上是(1).xxxx,隱含一個1
- 階數(shù)是用移碼表示斧吐,偏移量為127(28-1)又固,階碼是純正數(shù),范圍為0~(2^8-1)
- 移碼并未改變數(shù)的表示范圍煤率,E+1位的移碼(含一位符號位)仰冠,其表示范圍仍然是-2E~2E-1
- 雙精度浮點數(shù)(64位),1+11+52位
- 因此蝶糯,真值范圍為-2210-1*(2-2-53)
~2210-1*(2-2-53) - 即 -21023 * (2-2-53)~21023*(2-2-53)
整型(byte洋只、short、int昼捍、long)
-
建議為變量在使用之前賦默認(rèn)值
- int是最常用的整數(shù)類型识虚,不加后綴(L/l)的整數(shù)值,系統(tǒng)都默認(rèn)為是int類型妒茬。
- 以下兩種情形必須指出:
- 直接將較械4浮(在范圍內(nèi))的整數(shù)值賦值給byte或者short,系統(tǒng)會自動把數(shù)值當(dāng)成byte或者short
- 如果用巨大的整數(shù)值(超出int范圍)時乍钻,Java不會自動把數(shù)值當(dāng)成long(默認(rèn)是int)肛循,如果需要當(dāng)成long铭腕,在數(shù)值后加L或者l。
數(shù)值表示方式
(開頭)二進(jìn)制:0b/0B多糠,八進(jìn)制:0累舷,十六進(jìn)制0x/0X。
原碼夹孔、反碼笋粟、補碼
負(fù)數(shù)在計算機里是以補碼的形式存在的
變量的默認(rèn)值:
- 主方法中未設(shè)置內(nèi)容的變量,不會分配默認(rèn)值0析蝴,會造成編譯出錯
- 類屬性: 這種變量不在方法里面聲明害捕,獲益會存在默認(rèn)值。
- 規(guī)范要求:所有變量定義時都要直接賦值
基本數(shù)據(jù)類型的轉(zhuǎn)型操作流程
- 范圍小和范圍大的兩種數(shù)據(jù)操作闷畸,范圍小的數(shù)據(jù)類型自動變?yōu)榉秶蟮臄?shù)據(jù)類型尝盼。如int + long = long
- 如果把范圍大的數(shù)據(jù)變成表示范圍小的數(shù)據(jù),則必須強制轉(zhuǎn)換佑菩,如 int 型 = (int)long 型
對byte的賦值的特殊支持
浮點型
- 遵循IEEE754標(biāo)準(zhǔn)
- 指的是小數(shù)盾沫,默認(rèn)是double
- **double * double **計算錯誤(需要用到BigDecimal)
- double->flout強制類型轉(zhuǎn)換(F/(flout關(guān)鍵字))
- 正無窮大(所有相等)、負(fù)無窮大(所有相等)殿漠、非數(shù)(跟任何值不相等)
數(shù)值中使用下劃線分隔
字符型(char)
-
大小寫轉(zhuǎn)換(小寫字母比大寫多32)
- Java使用的是NUICODE而不是ASCII赴精,十六進(jìn)制定義的編碼
-
單引號 ' char'括起來
轉(zhuǎn)義字符
字符表示的三種格式
- 'A'
- 轉(zhuǎn)義字符
- 直接使用Unicode值來表示字符型值,格式是'\uXXXX',其中XXXX代表一個十六進(jìn)制的整數(shù)
字符串(String)
- 字符串用 String類來表示绞幌,用雙引號(" ")括起來
- 轉(zhuǎn)義字符 \
- 任何數(shù)據(jù)類型遇到String變量的“+”操作都會自動變成為String型數(shù)據(jù)
布爾型
- 只有兩種取值 true 和 false
- 不能用0或者非0來表示
運算符
- 沒有必要去記住運算符的優(yōu)先級蕾哟,建議多使用“()”去改變優(yōu)先級
下面是要強調(diào)的運算符:三目運算符、邏輯運算符和位運算符
三目運算符
是一種賦值運算符莲蜘,語法如下
邏輯運算符
包括三種:與(多個條件一起滿足)谭确、或(多個條件有一個滿足)、非
-
“與”操作:1.普通與(&):兩個條件都會計算 2.短路與(&&):如果第一個條件不滿足票渠,后面的則不會計算
- “或”操作:1.普通或(|)操作 2. 短路“或”操作逐哈。運算規(guī)則和“與”操作相似
位運算符
- 包含 &、|问顷、^昂秃、~、>>杜窄、<<肠骆、>>>。所有的位運算都是采用二進(jìn)制數(shù)據(jù)進(jìn)行操作的
-
其中“異或”^的運算法則:同為0羞芍,異為1
基本類型的類型轉(zhuǎn)換
- 開發(fā)中數(shù)據(jù)類型轉(zhuǎn)換問題:實際上數(shù)據(jù)的自動轉(zhuǎn)換就是將范圍小的數(shù)據(jù)類型自動變?yōu)榉秶蟮臄?shù)據(jù)類型哗戈。而數(shù)據(jù)的強制轉(zhuǎn)換,就是將數(shù)據(jù)范圍大的類型變?yōu)閿?shù)據(jù)范圍小的數(shù)據(jù)類型荷科。
自動類型轉(zhuǎn)換
- 所有數(shù)值型變量可以相互轉(zhuǎn)換
強制類型轉(zhuǎn)換
- 將范圍大的類型轉(zhuǎn)變?yōu)閿?shù)據(jù)范圍小的數(shù)據(jù)類型
- 語法:(targetType)value
表達(dá)式類型的自動提升
- 當(dāng)一個算術(shù)表達(dá)式中包含多個基本類型的值時唯咬,整個算術(shù)表達(dá)式的數(shù)據(jù)類型將發(fā)生自動提升纱注。規(guī)則如下:
- 所有的byte、short胆胰、char類型將被提升到int類型
- 整個算術(shù)表達(dá)式數(shù)據(jù)類型自動提升到與表達(dá)式中最高等級操作數(shù)同樣的類型狞贱。
直接量
- 通常只有三種類型的數(shù)據(jù)可以指定直接量:基本類型、字符串類型和null類型
- 基本類型:int蜀涨、long瞎嬉、float、double厚柳、boolean氧枣、char、String别垮、null
- null類型是一種特殊類型便监,可以賦值給任何引用類型的變量,表示這個引用類型變量中保存的地址為空碳想,即還未指向任何有效對象烧董。
- 需要指出 String字符串直接量,當(dāng)程序第一次使用某個字符串直接量時胧奔,Java會使用**常量池(constant pool)來緩存該字符串直接量逊移。如果后面的部分需要用到該字符串直接量時,Java會直接使用常量池(constant pool)中的字符串直接量
-
常量池:編譯期被確定龙填,并被保存在已編譯的.class文件中的一些數(shù)據(jù)胳泉。它包括類、方法觅够、接口中的常量胶背,也包括字符串直接量
![需深入理解常量池]https://upload-images.jianshu.io/upload_images/9239599-1a0c058d06561e38.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
程序結(jié)構(gòu)
一般來說,程序結(jié)構(gòu)包括3種:順序結(jié)構(gòu)喘先、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)
- 共同點,他們都只有一個入口廷粒,也只有一個出口窘拯。
選擇(分支)結(jié)構(gòu)
-
包括if、if...else及switch語句
1.第一組選擇結(jié)構(gòu):if坝茎、if....else涤姊、if...else if...else
2.第二組選擇結(jié)構(gòu):如果是多數(shù)值判斷,可以通過switch語句完成嗤放。
JDK不同版本switch支持的判斷數(shù)值變化
循環(huán)結(jié)構(gòu)
- 循環(huán)主要指某一代碼可以被重復(fù)執(zhí)行多次思喊。
- 分為兩種:while循環(huán)和for循環(huán)
- while循環(huán):do...while和while循環(huán)。
- for循環(huán):最大特點是已經(jīng)明確地知道了循環(huán)次數(shù)次酌。
好處:循環(huán)的初始值定義恨课、循環(huán)判斷舆乔、循環(huán)條件修改可以再一行語句中完成。
三種循環(huán)語句的選擇
- while和for循環(huán)的使用次數(shù)較多剂公,使用條件如下:
- while循環(huán):不確定循環(huán)次數(shù)希俩,但是確定結(jié)束條件的情況下使用;
- do循環(huán):確定循環(huán)次數(shù)的情況下使用纲辽。
break語句
強迫程序中斷循環(huán)颜武,只能結(jié)束本層循環(huán),同時只能設(shè)置在最內(nèi)層循環(huán)拖吼。如果需要設(shè)置在外層鳞上,需要和標(biāo)簽outer配套使用。
標(biāo)簽和循環(huán)體之間不能插入其他代碼吊档,否則無效因块。
continue語句
強迫程序調(diào)到循環(huán)的起始處,當(dāng)程序運行到continue語句時籍铁,會停止運行剩余的循環(huán)主體涡上,回到循環(huán)的開始處繼續(xù)運行。
后面也可以加outer標(biāo)簽
return
- 可以直接結(jié)束當(dāng)前所在的方法拒名,因此也可以結(jié)束循環(huán)吩愧,而不管有多少層循環(huán)。
區(qū)別與聯(lián)系
continue的功能和break有點類似增显,區(qū)別是continue只是忽略本次循環(huán)剩下語句雁佳,接著開始下一次循環(huán),并不會終止循環(huán)同云;而break則是完全終止循環(huán)本身糖权。
都可以加outer標(biāo)簽配合使用。
方法
方法的基本定義
- 命名規(guī)范:第一個單詞的首字母小寫炸站,之后每個單詞的首字母大寫星澳,“駝峰規(guī)則”如:printLn()、getMessage().
方法的重載【重點】
- 方法的重載是指方法名稱相同旱易,參數(shù)的類型或者個數(shù)不同禁偎,調(diào)用的時候會按照傳遞的參數(shù)類型和個數(shù)完成不同的方法體的執(zhí)行。
- 注意 方法重載時只看方法名稱阀坏、參數(shù)類型及個數(shù)如暖,而無需關(guān)注方法的返回值類型。
-
Java里不能使用方法返回值類型作為區(qū)分方法重載的依據(jù)忌堂。
遞歸調(diào)用
指方法自己調(diào)用自己的形式盒至。
必須滿足的兩個條件:
- 必須有結(jié)束條件
- 每次調(diào)用的時候都需要改變傳遞的參數(shù)
- 盡量避免使用遞歸,容易造成內(nèi)存溢出
主方法里面代碼越少越好
總結(jié):
orient/strip%7CimageView2/2/w/1240)