2018-09-20 Java基礎(chǔ)語法

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類型妒茬。
  • 以下兩種情形必須指出:
  1. 直接將較械4浮(在范圍內(nèi))的整數(shù)值賦值給byte或者short,系統(tǒng)會自動把數(shù)值當(dāng)成byte或者short
  2. 如果用巨大的整數(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ī)則如下:
  1. 所有的byte、short胆胰、char類型將被提升到int類型
  2. 整個算術(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)
  1. while循環(huán):do...while和while循環(huán)。
  2. 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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市枷遂,隨后出現(xiàn)的幾起案子樱衷,更是在濱河造成了極大的恐慌,老刑警劉巖登淘,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箫老,死亡現(xiàn)場離奇詭異,居然都是意外死亡黔州,警方通過查閱死者的電腦和手機耍鬓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來流妻,“玉大人牲蜀,你說我怎么就攤上這事∩鹫猓” “怎么了涣达?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長证薇。 經(jīng)常有香客問我度苔,道長,這世上最難降的妖魔是什么浑度? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任寇窑,我火速辦了婚禮,結(jié)果婚禮上箩张,老公的妹妹穿的比我還像新娘甩骏。我一直安慰自己,他們只是感情好先慷,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布饮笛。 她就那樣靜靜地躺著,像睡著了一般论熙。 火紅的嫁衣襯著肌膚如雪福青。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天赴肚,我揣著相機與錄音素跺,去河邊找鬼。 笑死誉券,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刊愚。 我是一名探鬼主播踊跟,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了商玫?” 一聲冷哼從身側(cè)響起箕憾,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拳昌,沒想到半個月后袭异,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡炬藤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年御铃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沈矿。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡上真,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羹膳,到底是詐尸還是另有隱情睡互,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布陵像,位于F島的核電站就珠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏醒颖。R本人自食惡果不足惜妻怎,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望图贸。 院中可真熱鬧蹂季,春花似錦、人聲如沸疏日。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沟优。三九已至涕滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挠阁,已是汗流浹背宾肺。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侵俗,地道東北人锨用。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像隘谣,于是被迫代替她去往敵國和親增拥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計...
    子非魚_t_閱讀 4,186評論 1 44
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)掌栅,也就是一...
    悟名先生閱讀 4,149評論 0 13
  • 我盡量寫簡潔吧秩仆。感想太多,可寫上很多頁字猾封,甚至我自大學(xué)以來關(guān)于哲學(xué)和科學(xué)的思考都可由此引申澄耍。另一方面,再多的...
    二羽_ba63閱讀 985評論 1 2
  • 說在之前的話 本次交流所有的信息都是個人感受晌缘,有其他意見大家可以一起交流齐莲。正所謂文無第一,武無第二枚钓。在沒有嚴(yán)格的規(guī)...
    丁逸閱讀 1,391評論 3 2
  • 我記得多年前,第一次看到一位國外大師的銷售信的時候,情不自禁的一口氣讀完卡乾,看起來非常簡單善延,沒有特別的詞匯声功,小學(xué)生都...
    韶山進(jìn)閱讀 735評論 1 1