2.1 關(guān)鍵字和保留字
2.1.1 關(guān)鍵字
定義:被Java語言賦予了特殊含義糊秆,用做專門用途的字符串(單詞)
特點(diǎn):關(guān)鍵字中所有字母都為小寫
-
用于定義數(shù)據(jù)類型的關(guān)鍵字??
class interface
enum byte
short int long
float double
char
boolean
void
-
用于定義數(shù)據(jù)類型值的關(guān)鍵字
true false null
-
用于定義流程控制的關(guān)鍵字
if else
switch case default
while do
for
continue break return
-
用于定義 訪問權(quán)限修飾符 的關(guān)鍵字
public protect private
-
用于定義 類、函數(shù)醋拧、變量修飾符 的關(guān)鍵字??
abstract final static synchronize
-
用于定義 類與類之間關(guān)系 的關(guān)鍵字
extends implements
-
用于定義 建立實例、引用實例及判斷實例 的關(guān)鍵字
new
this super
instanceof
-
用于 異常處理 的關(guān)鍵字
try catch finally
throw throws
-
用于 包 的關(guān)鍵字
package import
-
其它修飾符關(guān)鍵字
native strictfp transient valatile assert
2.1.2 保留字 待之后的JAVA版本使用
cast固蚤、future饼齿、generic、inner珍剑、operator、outer死陆、rest招拙、var、goto措译、const
2.2 標(biāo)識符(identifier)
2.2.1 定義
Java 對各種變量迫像、方法和類等要素命名時使用的字符序列稱為標(biāo)識符
技巧:凡是自己可以起名字的地方都叫標(biāo)識符。
2.2.2 定義合法標(biāo)識符規(guī)則:
- 由26個英文字母大小寫瞳遍,0-9 闻妓,_或 $ 組成
- 數(shù)字不可以開頭。
- 不可以使用關(guān)鍵字和保留字掠械,但能包含關(guān)鍵字和保留字由缆。
- Java中嚴(yán)格區(qū)分大小寫注祖,長度無限制。
- 標(biāo)識符不能包含空格均唉。
2.2.3 Java的名稱命名規(guī)范----約定俗成
包名:多單詞組成時所有字母都小寫:xxxyyyzzz
類名是晨、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz
變量名舔箭、方法名:多單詞組成時罩缴,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz
-
常量名:所有字母都大寫层扶。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
注意1:在起名字時箫章,為了提高閱讀性,要盡量有意義镜会,“見名知意”檬寂。
注意2:Java采用unicode字符集,因此標(biāo)識符也可以使用漢字聲明戳表,但是不建議使用桶至。
2.3 變量
使用變量注意:
- Java中每個變量必須先聲明,后使用匾旭,同時避免使用關(guān)鍵字和保留字
- 變量的作用域:一對{ }之間有效
- 初始化值
- 使用變量名來訪問這塊區(qū)域的數(shù)據(jù)
2.3.1 變量的分類
- 按數(shù)據(jù)類型
//??添加圖片
整數(shù)類型
Java各整數(shù)類型有固定的表數(shù)范圍和字段長度镣屹,不受具體OS的影響,以保證java程序的可移植性价涝。
類型 | 占用存儲空間 | 表數(shù)的范圍 | 特殊備注 |
---|---|---|---|
byte | 1字節(jié)=8bit位 | -2^7 ~ 2^7-1 (-128 ~ 127) | |
short | 2字節(jié) | -2^15 ~ 2^15-1 (-32768 ~ 32767) | |
int | 4字節(jié) | -2^31 ~ 2^31-1 (-21億4748萬3648 ~ 21億4748萬3658) | 通常聲明為int型 |
long | 8字節(jié) | -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775808)約922兆(億億) | 除非不足以表示較大的數(shù)女蜈,才使用long。聲明long型常量須后加‘l’或‘L’ |
浮點(diǎn)類型
也有固定的表數(shù)范圍和字段長度飒泻,不受具體操作系統(tǒng)的影響鞭光。
兩種表示形式
-
十進(jìn)制數(shù)形式
5.12 1024.0f .128
-
科學(xué)記數(shù)法形式
5.12E2 1024E2 100E-2
類型 | 占用存儲空間 | 表數(shù)的范圍 | 特殊備注 |
---|---|---|---|
單精度float | 4字節(jié) | 大約正負(fù)3.40282347E+38F(有效位數(shù)6~7位) | 很多情況下混坞,精度很難滿足需求 |
雙精度double | 8字節(jié) | 大約正負(fù)1.79769313486231570E+308(有效位數(shù)位15位) | 精度是float的兩倍庆冕,通常采用此類型 |
Java 的浮點(diǎn)型常量默認(rèn)為double型看幼,聲明float型常量,須后加‘f’或‘F’
char----字符類型
char 型數(shù)據(jù)用來表示通常意義上“字符”(2字節(jié))
字符型常量的三種表現(xiàn)形式:
- 字符常量是用單引號(‘ ’)括起來的單個字符史辙,涵蓋世界上所有書面語的字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
- Java中還允許使用轉(zhuǎn)義字符‘\’來將其后的字符轉(zhuǎn)變?yōu)?strong>特殊字符型常量佩伤。例如:char c3 = ‘\n’; // '\n'表示換行符
- 直接使用 Unicode 值來表示字符型常量:‘\uXXXX’聊倔。其中,XXXX代表一個十六進(jìn)制整數(shù)生巡。如:\u000a 表示 \n耙蔑。
char類型是可以進(jìn)行運(yùn)算的。因為它都對應(yīng)有Unicode碼孤荣。
轉(zhuǎn)義字符 說明 \b 退格符 \n 換行 \r 回車符 \t 制表符 " 雙引號 ' 單引號 |反斜線
UTF-8 是在互聯(lián)網(wǎng)上使用最廣的一種 Unicode 的實現(xiàn)方式甸陌。
定義:UTF-8 是一種變長的編碼方式须揣。它可以使用 1-6 個字節(jié)表示一個符號,根據(jù)不同的符號而變化字節(jié)長度钱豁。
UTF-8的編碼規(guī)則:
- 對于單字節(jié)的UTF-8編碼耻卡,該字節(jié)的最高位為0,其余7位用來對字符進(jìn)行編碼(等同于ASCII碼)牲尺。
- 對于多字節(jié)的UTF-8編碼卵酪,如果編碼包含 n 個字節(jié),那么第一個字節(jié)的前 n 位為1谤碳,第一個字節(jié)的第 n+1 位為0溃卡,該字節(jié)的剩余各位用來對字符進(jìn)行編碼。在第一個字節(jié)之后的所有的字節(jié)估蹄,都是最高兩位為"10"塑煎,其余6位用來對字符進(jìn)行編碼。
boolean:布爾類型
用來判斷邏輯條件臭蚁,一般用于程序流程控制:
- if條件控制語句最铁;
- while循環(huán)控制語句;
- do-while循環(huán)控制語句垮兑;
- for循環(huán)控制語句冷尉;
數(shù)據(jù)只允許取值true和false,無null系枪;
不可以0或非 0 的整數(shù)替代雀哨,這點(diǎn)與 C 語言不同。
-
Java虛擬機(jī)中沒有任何供boolean值專用的字節(jié)碼指令私爷,java語言表達(dá)所操作的boolean值雾棺,在編譯之后都使用 java 虛擬機(jī)中的 int 數(shù)據(jù)類型來代替: true 用1表示, false 用0表示
參考《java虛擬機(jī)規(guī)范 8版》
String:字符串類型
String不是基本數(shù)據(jù)類型衬浑,屬于引用數(shù)據(jù)類型捌浩。
1) 使用方式跟基本數(shù)據(jù)類型一致:String str = "lona";
2) 一個字符串可以串接另一個字符串,或直接串接其它類型的數(shù)據(jù)工秩。
2.3.2 基本數(shù)據(jù)類型變量間轉(zhuǎn)換
自動類型轉(zhuǎn)換:
容量小的類型自動轉(zhuǎn)換為容量大的數(shù)據(jù)類型尸饺。數(shù)據(jù)類型按容量大小排序為
(byte、char助币、short) -> int -> long -> float -> double
- 有多種類型的數(shù)據(jù)混合運(yùn)算時浪听,系統(tǒng)首先自動將所有數(shù)據(jù)轉(zhuǎn)換成容量最大的那種數(shù)據(jù)類型,然后再進(jìn)行計算眉菱。
- byte,short,char之間不會相互轉(zhuǎn)換迹栓,他們?nèi)咴谟嬎銜r首先轉(zhuǎn)換為 int 類型。
- 當(dāng)把任何基本類型的值和字符串(String)進(jìn)行連接運(yùn)算時(+)俭缓,基本類型的值將自動轉(zhuǎn)化為字符串類型克伊。
強(qiáng)制類型轉(zhuǎn)換
- 自動類型轉(zhuǎn)換的逆過程叉抡,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型。使用時要加上強(qiáng)制轉(zhuǎn)換符:()答毫,但可能造成精度降低或溢出,格外要注意褥民。??
- 通常,字符串不能直接轉(zhuǎn)換為基本類型洗搂,但通過基本類型對應(yīng)的包裝類則可以實現(xiàn)把字符串轉(zhuǎn)換成基本類型消返。
如: String a = “43”; int i = Integer.parseInt(a); - boolean類型不可以轉(zhuǎn)換為其它的數(shù)據(jù)類型
2.3進(jìn)制與進(jìn)制間的轉(zhuǎn)換
對于整數(shù),有四種表示方式:
- 二進(jìn)制:0,1 耘拇,滿2進(jìn)1.以0b或0B開頭撵颊。
- 十進(jìn)制:0-9 ,滿10進(jìn)1.
- 八進(jìn)制:0-7 惫叛,滿8進(jìn)1. 以數(shù)字0開頭表示倡勇。
- 十六進(jìn)制:0-9及A-F,滿16進(jìn)1. 以0x或0X開頭表示嘉涌。此處的A-F不區(qū)分大小寫妻熊。
如:0x21AF +1= 0X21B0
二進(jìn)制
所有數(shù)字在計算機(jī)底層都以二進(jìn)制形式存在。
-
計算機(jī)以補(bǔ)碼的形式保存所有的整數(shù)仑最。
(約定俗成)正數(shù)的原碼扔役、反碼、補(bǔ)碼都相同
Java當(dāng)用二進(jìn)制定義整數(shù)時:
* 整數(shù)常量默認(rèn)是int類型警医,其第32位是符號位亿胸; * 當(dāng)是long類型時,二進(jìn)制默認(rèn)占64位预皇,第64位是符號位
負(fù)數(shù)時:
為了方便負(fù)數(shù)的計算侈玄,利用補(bǔ)碼,目的是 減法 可以 用加補(bǔ)碼 的方法計算吟温。
- 原碼:直接將一個數(shù)值換成二進(jìn)制數(shù)序仙。最高位是符號位
- 負(fù)數(shù)的反碼:是對原碼按位取反,只是最高位(符號位)確定為1溯街。
- 負(fù)數(shù)的補(bǔ)碼:其反碼加1诱桂。
2.4 運(yùn)算符
是一種特殊的符號洋丐,用以表示數(shù)據(jù)的運(yùn)算呈昔、賦值和比較等。
- 算術(shù)運(yùn)算符
運(yùn)算符 | 運(yùn)算 | 范例 | 結(jié)果 |
---|---|---|---|
+ | 正號 | +8 | 8 |
- | 負(fù)號 | -8 | -8 |
+ | 正號 | 6+2 | 8 |
- | 減號 | 6-2 | 4 |
* | 乘號 | 6*2 | 12 |
/ | 除號 | 6/2 | 3 |
% | 取模(取余) | 7/2 | 1 |
++ | 自增(前)-先運(yùn)算后取值 | a=2;b=++a; | a=3;b=3 |
++ | 自增(后)-先取值后運(yùn)算 | a=2;b=a++; | a=3;b=2 |
-- | 自減(前)-先運(yùn)算后取值 | a=2;b=--a; | a=1;b=1 |
-- | 自減(后)-先取值后運(yùn)算 | a=2;b=a--; | a=1;b=2 |
+ | 字符串相加 | "lo" + "na" | "lona" |
int i1 = 10;int i2 = 20;
int i = i1++;
System.out.print("i="+i);
System.out.println("i1="+i1);
i = ++i1;
System.out.print("i="+i);
System.out.println("i1="+i1);
i = i2--;
System.out.print("i="+i);
System.out.println("i2="+i2);
i = --i2;
System.out.print("i="+i);
System.out.println("i2="+i2);
/*
結(jié)果:
i=10i1=11
i=12i1=12
i=20i2=19
i=18i2=18
*/
-
賦值運(yùn)算符
- 當(dāng)“=”兩側(cè)數(shù)據(jù)類型不一致時友绝,可以使用自動類型轉(zhuǎn)換或使用強(qiáng)制類型轉(zhuǎn)換原則進(jìn)行處理堤尾。
- 支持連續(xù)賦值。
- +=, -=, *=, /=, %=
//example1
int i = 1;
i *= 0.1;
System.out.println(i);//0 注意i的類型
i++;
System.out.println(i);//1
//example2
int n = 10;
n += (n++) + (++n);
System.out.println(n);//32
- 比較運(yùn)算符(關(guān)系運(yùn)算符)
運(yùn)算符 | 運(yùn)算 | 范例 | 結(jié)果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
instanceof | 檢查是否是類的對象 | “Hello” instanceof String | true |
- 邏輯運(yùn)算符
a | b | a&b | a && b | a I b | a II b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
&—邏輯與 | —邏輯或 迁客!—邏輯非
&& —短路與 || —短路或 ^ —邏輯異或
“&”和“&&”的區(qū)別:
單&時郭宝,左邊無論真假辞槐,右邊都進(jìn)行運(yùn)算;
雙&時粘室,如果左邊為真榄檬,右邊參與運(yùn)算,如果左邊為假衔统,那么右邊不參與運(yùn)算鹿榜。
“|”和“||”的區(qū)別
同理,||表示:當(dāng)左邊為真锦爵,右邊不參與運(yùn)算舱殿。
異或( ^ )與或( | )的不同之處是:
當(dāng)異或左右都為true時,結(jié)果為false险掀。
理解:異或沪袭,追求的是“異”!
/*
* 邏輯運(yùn)算符
* */
int x = 1;
int y=1;
if(x++==2 & ++y==2){
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=2
if(x++==2 && ++y==2){
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=1
if(x++==1 | ++y==1){
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=2
if(x++==1 || ++y==1){
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=1
//example2
boolean x=true;
boolean y=false;
short z = 42;
//if(y == true)
if((z++==42)&&(y=true))z++;
if((x=false) || (++z==45)) z++;
System. out.println("z="+z);//46
- 位運(yùn)算符
運(yùn)算符 | 運(yùn)算 | 范例 | 運(yùn)算細(xì)節(jié) | ||||
---|---|---|---|---|---|---|---|
<< | 左移 | 3 << 2 = 12 --> 3*2*2=12 | 空位補(bǔ)0,被移除的高位丟棄樟氢,空缺位補(bǔ)0冈绊。 | ||||
>> | 右移 | 3 >> 1 = 1 --> 3/2=1 | 被移位的二進(jìn)制最高位是0,右移后埠啃,空缺位補(bǔ)0焚碌;最高位是1,空缺位補(bǔ)1霸妹。 | ||||
>>> | 無符號右移 | 3 >>> 1 = 1 --> 3/2=1 | 被移位二進(jìn)制最高位無論是0或者是1十电,空缺位都用0補(bǔ)。 | ||||
& | 與運(yùn)算 | 6 & 3 = 2 | 二進(jìn)制位進(jìn)行&運(yùn)算叹螟,只有1&1時結(jié)果是1鹃骂,否則是0; | ||||
I | 或運(yùn)算 | 6 I 3 = 7 | 二進(jìn)制位進(jìn)行 I 運(yùn)算,只有0 I 0時結(jié)果是0罢绽,否則是1; | ^ | 異或運(yùn)算 | 6 ^ 3 = 5 | 相同二進(jìn)制位進(jìn)行 ^ 運(yùn)算畏线,結(jié)果是0;1^1=0 , 0^0=0 不相同二進(jìn)制位 ^ 運(yùn)算結(jié)果是1良价。1^0=1 , 0^1=1 |
~ | 反碼?? | ~6 = -7 | 正數(shù)取反寝殴,各二進(jìn)制碼按補(bǔ)碼各位取反;負(fù)數(shù)取反,各二進(jìn)制碼按補(bǔ)碼各位取反 |
- 三元運(yùn)算符