文章目錄
java基本語法
一. 關鍵字和保留字
1.1 關鍵字(keyword)
- 定義:被java語言賦予特殊的含義,用作特定作用的字符串。
- 特點:關鍵字中的所有字母爲小寫字母。
- 參考:官方java關鍵字和保留字
自我總結:
1.2 保留字
- 定義:對於現在版本的java尚且沒有使用這些字符串,但是保留下來防止以後要用到。
- 舉慄:goto,const(有一次的筆試題就考到了嗷~~)
二. 標識符
- 定義:對於給類,方法,變量等要素命名的字符序列。(簡單說就是用來自己起名字的字符串就是標識符)
2.1 標識符命名規則
- 標識符由26個英文字母大小寫(A ~ Z,a ~ z),0-9,下劃線(_),美元符號($)組成
- 開頭不可以是數字
- 不可以直接使用關鍵字和保留字作標識符,但是可以包含關鍵字和保留字
- 大小寫敏感,長度無限制
- 標識符中不要包含空格
2.2 java命名規範
- 包名: 全部採用小寫。如:xxyyzz
- 類名,接口名: 多單詞組成時,每個單詞首字母大寫。如:XxYyZz
- 方法名,變量名: 採用駝峯式命名規則,即:多單詞組成時,首字母小寫,之後的每個單詞首字母大寫。如:xxYyZz
- 常量名: 多單詞組成時,全部大寫,單詞之間採用下劃線分開。如:XX_YY_ZZ
注意
- 在起名字時,要注意儘量做到能直接看懂什麼意思(即見名知意)。不要爲了方便自己省事隨便起名字。也不要寫單詞時縮寫,只有自己能看懂。
- 雖然java採用unicode字符集,因此標識符也可以使用漢字聲明,但是不要這樣做,因爲會拉低你的逼格,還會遭鄙視嗷。我們要有國際範,萬一你的代碼是要供全世界模仿學習的呢?
三. 變量
3.1 變量概述
- 定義:內存中的一個存儲區域,該區域的數據可以在同一類型範圍內不斷變化,變量是程序中最基本的存儲單元
- 作用:用於在內存中保存數據
3.1.1 使用變量注意
- java中的變量必須先聲明,後使用。
- 我們直接使用Java的變量名來訪問內存中保存的數據。
- 變量的作用範圍在其定義的一對{}內,且只在作用域內有效。
- 在同一個作用域內,變量名具有唯一性。
3.1.2 變量的聲明與賦值
- 變量的聲明
<數據類型><變量名稱>;
舉慄:int a; - 變量的賦值
<變量名稱> = <變量數值>;
舉慄:a = 10; - 變量的聲明並賦值
<數據類型><變量名稱> = <變量數值>;
舉慄:int b = 2;
3.1.3 成員變量和局部變量
- 成員變量:
- 定義:即直接定義在類中的變量
- 作用域:變量的作用域是當前整個類內部。
- 局部變量:
- 定義:即定義在方法體內部,代碼塊內部,或者方法的參數中的變量
- 作用域:作用範圍爲當前方法內部,代碼塊內部,方法內部.
注意:全局變量可以在定義時不進行初始化和賦值,因爲全局變量會有默認值。局部變量(除了方法參數變量除外)在使用前一定要進行賦值(推薦在定義時直接顯式初始化),不然編譯會失敗嗷。具體分析隨後我會單獨寫一個博客。
3.2 變量數據類型
- 數據類型定義;由於java是一種強類型語言(即對於每一個數據都應該明確聲明它的數據類型)。java中的變量的類型,總的來說java分爲 基本數據類型 和 引用數據類型 。區分的原因是在進行內存分配時的一些不同。以後的博客中會詳細跟大家介紹噠
3.2.1 基本數據類型
八大基本類型分類
- 按所佔bit大小(從小到大):boolean(2bit)<byte(8bit)<char(16bit)<short(16bit)<int(32bit)<float(32bit)<long(64bit)<double(64bit)
- 整數類型:byte,short,int,long
- java的整型常量默認爲 int 型,聲明long型常量須後加‘l’或‘L’。
- java的整型常量默認爲 int 型,聲明long型常量須後加‘l’或‘L’。
- 浮點類型:float,double
- float:單精度,尾數可以精確到7位有效數字。
- double:雙精度,精度是float的兩倍。通常採用此類型。
- 注意:聲明浮點型變量時,默認聲明爲double類型,聲明float時需要顯示聲明,結尾加上“f”或“F”
- 字符類型:char
- char佔2字節(byte)即16bit,通常用來表示字符。
- Java中的所有字符都使用Unicode編碼,故一個char可以存儲一個字母,一個漢字,或一個字符。
- 注意:char可以直接參與運算,因爲它都對應有Unicode碼。
- 表示形式
- 字符常量是用單引號(‘ ’)括起來的單個字符。例如:char c = ‘a’。
- Java中還允許使用轉義字符‘\’來將其後的字符轉變爲特殊字符型常量。例如:char c = ‘\n’; ( '\n’表示換行符)。
- 直接使用 Unicode 值來表示字符型常量:‘\uXXXX’。XXXX代表一個十六進制整數。如:\u000a 表示 \n。
- 布爾類型:boolean
- boolean類型數據只允許取值true和false,無null,且不能使用0和1來代表false和true。
- boolean一般用作判斷邏輯條件。
基本數據類型轉換*
- 自動轉換(隱式轉換)
1. 容量小的類型自動轉換爲容量大的數據類型。數據類型按容量大小排序爲 (byte,short,char)–>int–>long–>float–>double
2. 至於上述byte,short,char放在一塊是因爲它們在參與運算時直接提升到int類型再運算。他們三者不會轉化。
3. boolean類型不能與其它數據類型運算。
4. 當把任何基本數據類型的值和字符串(String)進行連接運算時(+)本數據類型的值將自動轉化爲字符串(String)類型。 - 強制轉換(顯示轉換)
1. 通常是將容量大的數據類型轉換爲容量小的數據類型,因此會存在精度溢出問題,也就是說在轉換過程中可能會造成精度的缺失。使用時要加上強制轉換符:()。例如:long a = 12l; int b = (int)a;
2. 注意字符串是引用類型不能直接轉換爲基本類型,但通過基本類型對應的封裝類進行轉換。
3. boolean類型不可以轉換成其他基本數據類型。
3.2.2 引用數據類型
- 主要是java中一些非基本數據類型,如類,接口,數組,字符串String(字符串是引用數據類型,記住嗷)
字符串
(待插入,String類比較重要之後會單獨寫一篇博客分析,各位看官敬請期待,等總結到的時候會及時插入博客鏈接的)
四. 運算符
4.1 概述
運算符是一種特殊的符號,用以表示數據的運算、賦值和比較等
4.2 算數運算符
如圖:
注意:
- ‘’/‘’,當整數相除時,結果會自動省去小數保留整數。當除數或被除數,或者兩者都是小數時結果按類型保留小數。
- “+”,除了有相加的功能外,還能把非字符串轉換爲字符串。
- ‘’%‘’,取模,如果模數爲負,對結果沒有影響,如:5%-2=1。但是如果被模數爲負數,則結果也爲負數。如:-5%2 = -1.
- 多注意++,–自增自減的前置和後置區別。
4.3 賦值運算符
- 賦值運算符:=
擴展賦值運算符:+=,-=,*=,/=,%=
栗子: int a += 2;就是int a = (int) (a + 2)
注意:有個強制轉換的過程。如:
解釋:a聲明爲short類型變量,第二行a+2在運算過程中會提升爲int類型,最後再賦值回short類型是不可以的,需要顯示轉換。但是下面+=因爲在底層幫你自動轉換了,所以a還是short類型。說到這,java還有個常量優化機制挺有意思的,建議大家瞭解一下。 - 注意:在聲明變量時不要用擴展的賦值運算符賦值。如:int a += 2;是編譯不通過的。
4.4 比較運算符
如圖:
注意:
- 比較運算符的結果都爲boolean類型的結果:true,false
4.5 邏輯運算符
- 邏輯運算符:& 邏輯與,| 邏輯或,!邏輯非,^ 邏輯異或,&& 短路與,|| 短路或
注意: - 邏輯運算符用來連接boolean類型表達式
- &&與&,||與|的區別。爲什麼前者叫短路呢?因爲存在短路現象,就是當條件足夠判斷出結果時,後面的邏輯判斷語句就可以不執行了。
栗子:3<2&&3<5在執行時,運行到3<2時就可以得出結果爲false,那麼後面的3<5就不會再執行了。同理||也一樣。對於&和|會執行全部判斷再得出結果。
4.6 位運算符
注意:
- 注意<<位數n代表乘以2的 n次方,>>位數n代表除以2的n次方。(傳統意義上講位運算比直接運算快,但是java好像對直接乘除以及%運算做過優化,底層實際也是採用的位運算的方式。但是好多人更樂意能用位運算就不用直接運算。所以見到這種寫法要認識嗷~)
4.7 三目運算符
- 格式:(條件表達式)?表達式1:表達式2;
- 解釋:若條件爲true,運算後的結果是表達式1。false則運算後的結果是表達式2。
- 注意:
- 表達式1和2是同種類型。
- 三元運算符與if-else的聯繫與區別:
1)三元運算符可簡化if-else語句
2)三元運算符要求必須返回一個結果。
3)if後的代碼塊可有多個語句