1.關鍵字(keyword) 定義:被Java語言賦予了特殊含義,用做專門用途的字元串(或單詞),這些字元串(或單詞)已經被Java定義好了。 特點:全部關鍵字都是小寫字母。 關鍵字查閱的官方地址: https://docs.oracle.com/javase/tutorial/java/nutsa ...
1.關鍵字(keyword)
定義:被Java語言賦予了特殊含義,用做專門用途的字元串(或單詞),這些字元串(或單詞)已經被Java定義好了。
特點:全部關鍵字都是小寫字母。
關鍵字查閱的官方地址: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
2.標識符(identifier)
Java中類名、變數名、方法名、數組名、文件名等要素命名時使用的字元序列,稱為標識符。凡是自己可以起名字的地方都叫標識符。
標識符的命名規則(必須遵守的硬性規定):
- 由英文字母大小寫,數字,_或 $ 組成
- 不能使用數字開頭
- 不能使用關鍵字和保留字,但能包含關鍵字和保留字
- Java中嚴格區分大小寫,長度無限制
- 標識符不能包含空格
標識符的命名規範:
- 包名:多單片語成時所有字母都小寫:xxxyyyzzz
- 類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz(大駝峰)
- 變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz(小駝峰)
- 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
註意(重要):在起名字時,為了提高閱讀性,要儘量有意義,“見名知意”。更多細節詳見《代碼整潔之道_關於標識符.txt》《阿裡巴巴Java開發手冊-1.7.1-黃山版》
3.變數
3.1 什麼是變數
在程式運行過程中,空間內的值是變化的,這個記憶體空間就稱為變數。變數是程式中不可或缺的組成單位,最基本的存儲單元。
變數的使用是程式設計中一個十分重要的環節。聲明變數就是要告訴編譯器這個變數的數據類型,這樣編譯器才知道需要配置多少空間給它,以及它能存放什麼樣的數據。
3.2 變數的概念
-
記憶體中的一個存儲區域,該區域的數據可以在同一類型範圍內不斷變化
-
變數的構成包含三個要素:數據類型、變數名、存儲的值
-
java語言中聲明變數:數據類型 變數名 = 變數值
-
變數的作用:用於在記憶體中保存數據
-
使用變數應該註意的事項:
-
聲明變數時必須註意標識符的命名規則和規範,使用小駝峰定義變數名;
-
java中每個變數必須先聲明,後使用;
-
變數的作用域:變數都有其作用域,變數只在這個作用域是有效的,出了這個作用域就失效了,其定義所在的一對{ }內就是該變數的作用域;
-
變數在賦值時,必須滿足聲明變數時定義的數據類型並且不能超出該數據類型的表數範圍。例如:
class test { public static void main(String[] args) { //下麵聲明兩個變數並賦值來驗證變數賦值時的註意事項 byte a = 128; int b = 'helloworld'; System.out.println("a"); System.out.println("b"); } }
-
同一個作用域內,不能定義重名的變數
-
3.3 變數的使用
3.3.1 聲明變數
聲明變數的格式:數據類型 變數名;
/* 下麵是聲明變數的舉例*/
class Test {
public static void main(String[] args){
int age; //聲明一個存儲int型數據的年齡變數
double weight; //聲明一個存儲double型數據的體重變數
char gender; //聲明一個存儲int型數據的年齡變數
boolean marry; //聲明一個存儲boolean型數據的婚姻狀態變數
String name; //聲明一個存儲String型數據的姓名變數
int a,b,c; //聲明多個同類型的變數
int d = 1; //聲明一個存儲int型的變數並給它賦值1
}
}
3.3.2 變數賦值
變數賦值的格式:變數名 = 值;
...
age = 18; //給3.3.1中聲明的變數age賦值18
gender = '女'; //給3.3.1中聲明的變數gender賦值女
4.數據類型
4.1 基本數據類型
4.1.1 整數類型:byte、short、int、long
- 整數類型簡稱整型,用來存儲整數數值,既沒有小數部分的數值。可以是正數,也可以是負數。整型數據根據它所占記憶體大小的不同分為byte、short、int、long。
- 註意:聲明long類型時,需要提供尾碼,'l'或'L'。例如:long x = 123123123123l;
4.1.2 浮點類型:float、double
- 浮點類型稱為浮點型,用來存儲含有小數部分的數值。Java中浮點類型分為單精度浮點類型(float)和雙精度浮點類型(double),它們具有不同的取值範圍。
- 定義float類型變數,賦值時需要以"f"或“F”作為尾碼。Java中預設情況下小數都被看作double型。
- 註意:浮點值屬於近似值,在電腦系統中運算後的結果可能與實際有偏差。並不是所有小數都能精確的用二進位浮點數表示,浮點型的數據不適合運用在不容許舍入誤差的金融計算領域等高精度需求的領域。
4.1.3 字元類型:char
-
字元類型用於存儲單個字元,占用16位(兩個位元組)的記憶體空間;
-
Java中的所有字元都使用Unicode編碼,故一個字元可以存儲一個字母,一個漢字,或其他書面語的一個字元;
-
Java語言也可以把字元作為整數對待。由於Unicode編碼採用無符號編碼,可以存儲65536個字元(0x00000xffff),所以Java中的字元幾乎可以處理所有國家的語言文字。若想得到一個065536的數所代表的Unicode表中相應位置上的字元,也必須使用char型顯示轉換。
-
在定義字元類型時,使用一對單引號表示,內部只能有一個字元;
-
字元變數的幾種表現形式:
-
形式1:使用單引號(' ')括起來的
單個字元
//使用char關鍵字可定義字元變數,其語法如下: char x = 'a'; //由於字元a在Unicode表中的排序位置是97,因此上面的語句也可以寫成: char x = 97; //這行也可理解為想要得到Unicode表中第97個字元,使用char型顯示轉換
-
形式2:直接使用
Unicode值
來表示字元型常量:‘\uXXXX
’。其中,XXXX代表一個十六進位整數 -
形式3:Java中還允許使用
轉義字元‘\’
來將其後的字元轉變為特殊字元型常量
-
-
轉義字元:
轉義字元是一種特殊的字元變數,它以反斜杠“\”開頭,後跟一個或對公字元。轉義字元具有特定含義,不同於字元原有的意義,故稱為轉義字元。
轉義字元 | 說明 | Unicode表示方式 |
---|---|---|
\n |
換行符 | \u000a |
\t |
製表符 | \u0009 |
\" |
雙引號 | \u0022 |
\' |
單引號 | \u0027 |
\\ |
反斜線 | \u005c |
\b |
退格符 | \u0008 |
\r |
回車符 | \u000d |
\f |
換頁符 | |
...... | ...... | ...... |
4.1.4 布爾類型:boolean
-
布爾類型又稱為邏輯類型,通過關鍵字boolean來定義布爾類型變數;
-
布爾類型只有ture和false兩個取值,分別代表布爾邏輯中的”真“和“假”;
-
布爾類型通常用在流程式控制制語句中,作為判斷條件;
-
例子說明:
boolean b; //定義布爾類型變數 boolean b1,b2; //定義多個布爾類型變數 b1 = ture; //給boolean類型變數賦值ture b2 = false; //給boolean類型變數賦值false
4.2 基本數據類型變數間運算規則
在Java程式中,不同的基本數據類型(只有7種,不包含boolean類型)變數的值經常需要進行相互轉換。
轉換的方式有兩種:自動類型提升
和強制類型轉換
。
4.2.1 自動類型提升
-
規則:當數據類型表數範圍小的變數與數據類型表數範圍大的變數做運算時,結果自動轉換為表數範圍大的數據類型變數值:
-
byte、short、char -->> int -->> long -->> float -->> double
-
特殊情況:
byte、short、char類型的變數之間做運算,結果為int類型。
/*
* 基本數據類型變數間的自動類型提升測試
* byte、short、char --> int --> long --> float --> double
* 下麵是進行自動類型提升中的特殊情況測試驗證學習
* */
public class VariableTest {
public static void main(String[] args) {
//聲明變數
byte b1,b2;
short s1,s2;
char c1,c2;
//變數賦值
b1 = b2 = 1;
s1 = s2 = 3;
c1 = c2 = 'a';
//System.out.println(((Object)(x)).getClass().getSimpleName())是列印出x的值的數據類型
System.out.println(((Object)(b1+b2)).getClass().getSimpleName()); // byte + byte
System.out.println(((Object)(s1+s2)).getClass().getSimpleName()); // short + short
System.out.println(((Object)(c1+c2)).getClass().getSimpleName()); // char + char
System.out.println(((Object)(b1+s1)).getClass().getSimpleName()); // byte + short
System.out.println(((Object)(b1+c1)).getClass().getSimpleName()); // byte + char
System.out.println(((Object)(s1+c1)).getClass().getSimpleName()); // short + char
}
}
4.2.2 強制類型轉換
-
當需要將變數轉換為比當前表數範圍小的數據類型,就需要使用強制類型轉換。
-
轉換格式:
//(要轉換的數據類型)被強制轉數據類型的變數名;
int i1 = 1;
System.out.println(((Object)(short)i1).getClass().getSimpleName());
System.out.println(((Object)(byte)i1).getClass().getSimpleName());
- 強制類型轉換會出現精度損失和精度溢出
4.3 基本數據類型與String的運算
4.3.1 字元串類型:String
- String是一個類,屬於引用數據類型不屬於基本數據類型
- 使用一對
""
來表示一個字元串,內部可以包含0個、1個或多個字元。 - 字元串變數的聲明和賦值:
//String 變數名 = "字元串";
String str = "Hello World!!!!!";
4.3.2 運算規則
- 任意八種基本數據類型中的一種與String類型只能進行連接“+”運算,且結果一定也是String類型;
- String類型不能強制類型轉換;
//String類型變數“+”運算,例子
int i = 10;
boolean b = true;
float f = 10.0f;
String str2 = "hello";
System.out.println(i + str2);
System.out.println(b + str2);
System.out.println(f + str2);
5.運算符
- 運算符是一些特殊符號,主要用於數學函數、一些類型的賦值語句和邏輯比較方面;
- Java中提供了豐富的運算符
- 運算符按操作數個數可劃分為:一元運算符(單目運算符)、二元運算符(雙目運算符)、三元運算符 (三目運算符)
分類 | 運算符 |
---|---|
一元運算符(單目運算符) | 正號(+)、負號(-)、++、--、!、~ |
二元運算符(雙目運算符) | 除了一元和三元運算符剩下的都是二元運算符 |
三元運算符 (三目運算符) | (條件表達式)?結果1:結果2 |
5.1 算術運算符
Java中的算術運算符主要有+(加)、-(減)、*(乘)、/(除)、%(取餘)、++(自增)、--(自減)
操作符 | 描述 | 例子(a = 1, b= 2) |
---|---|---|
+ | 加法 - 相加運算符兩側的值 | a + b 等於3 |
- | 減法 - 左操作數減去右操作數 | a - b 等於-1 |
* | 乘法 - 相乘操作符兩側的值 | a * b 等於2 |
/ | 除法 - 左操作數除以右操作數 | b / a 等於2 |
% | 取餘 - 左操作數除以右操作數的餘數 | b % a 等於 0 |
++ | 自增: 操作數的值增加1 | |
-- | 自減: 操作數的值減少1 |
註意:自增、自減運算符是單目運算符,可以放在操作元之前,也可以放在操作元之後。操作元必須是一個整型或浮點型變數。
++a(--a) //表示在使用變數a之前,先使a的值加1(或減1)
a++(a--) //表示在使用變數a之後,使a的值加1(或減1)
例如:
int a = 1;
int b,c;
b = ++a; //先將a的值加1,然後再賦值給b,此時b為2。
c = a++; //先將a的值賦值給c,然後a再+1,此時c為1。
5.2 關係(比較)運算符
Java中比較運算符屬於二元運算符,用於程式中變數之間、變數和自變數之間以及其他類型的信息之間比較。
操作符 | 描述 |
---|---|
== | 用於判斷兩個對象是否相等 |
!= | 用於判斷兩個對象是否不相等 |
> | 用於比較兩個對象的大小 |
< | 用於比較兩個對象的大小 |
>= | 用於判斷一個對象是否大於或等於另一個對象 |
<= | 用於判斷一個對象是否小於或等於另一個對象 |
- 比較運算符的運算結果只為boolean,要麼是true,要麼是false
- >、<、>=、<= :只適用於基本數據類型(除boolean類型之外)
- ==、!= :適用於基本數據類型和引用數據類型
5.3 邏輯運算符
運算符 | 含義 | 用法 |
---|---|---|
&&、& | 邏輯與 | op1 && op2 |
|| | 邏輯或 | op1 || op2 |
! | 邏輯非 | !op |
^ | 異或 | op1^op2 |
- 邏輯運算符,操作的都是boolean類型的變數,運算結果也是boolean類型的值
- 運算符說明:
- & 和 &&:表示"且"關係,當符號左右兩邊布爾值都是true時,結果才能為true。否則,為false;
- || :表示"或"關係,當符號兩邊布爾值有一邊為true時,結果為true。當兩邊都為false時,結果為false;
- ! :表示"非"關係,當變數布爾值為true時,結果為false。當變數布爾值為false時,結果為true。
- ^:當符號左右兩邊布爾值不同時,結果為true。當兩邊布爾值相同時,結果為false。
5.4 位運算符
位運算符除“按位與”和“按位或”運算符外,其他只能用於處理整數的操作數,包括byte、short、char、int和long等數據類型。位運算符是完全針對位方面的操作。
- 位運算符的運算過程都是基於二進位的補碼運算
(1)左移:<<
運算規則:在一定範圍內,數據每向左移動一位,相當於原數據*2。(正數、負數都適用)
【註意】當左移的位數n超過該數據類型的總位數時,相當於左移(n-總位數)位
3<<4 類似於 3*2的4次冪 => 3*16 => 48
-3<<4 類似於 -3*2的4次冪 => -3*16 => -48
(2)右移:>>
運算規則:在一定範圍內,數據每向右移動一位,相當於原數據/2。(正數、負數都適用)
【註意】如果不能整除,
向下取整
。69>>4 類似於 69/2的4次 = 69/16 =4
-69>>4 類似於 -69/2的4次 = -69/16 = -5
(3)無符號右移:>>>
運算規則:往右移動後,左邊空出來的位直接補0。(正數、負數都適用)
69>>>4 類似於 69/2的4次 = 69/16 =4
-69>>>4 結果:268435451
(4)按位與:&
運算規則:對應位都是1才為1,否則為0。
1 & 1 結果為1
1 & 0 結果為0
0 & 1 結果為0
0 & 0 結果為0
9 & 7 = 1
-9 & 7 = 7
(5)按位或:|
運算規則:對應位只要有1即為1,否則為0。
1 | 1 結果為1
1 | 0 結果為1
0 | 1 結果為1
0 & 0 結果為0
9 | 7 //結果: 15
-9 | 7 //結果: -9
(6)按位異或:^
運算規則:對應位一個為1一個為0,才為1,否則為0。
1 ^ 1 結果為0
1 ^ 0 結果為1
0 ^ 1 結果為1
0 ^ 0 結果為0
9 ^ 7 //結果為14
-9 ^ 7 //結果為-16
(7)按位取反:~
運算規則:對應位為1,則結果為0;對應位為0,則結果為1。
~0就是1
~1就是0
~9 //結果:-10
~-9 //結果:8
5.5 賦值運算符
運算符 | 符號解釋 |
---|---|
+= |
將符號左邊的值 和右邊的值 進行相加 操作,最後將結果賦值給左邊的變數 |
-= |
將符號左邊的值 和右邊的值 進行相減 操作,最後將結果賦值給左邊的變數 |
*= |
將符號左邊的值 和右邊的值 進行相乘 操作,最後將結果賦值給左邊的變數 |
/= |
將符號左邊的值 和右邊的值 進行相除 操作,最後將結果賦值給左邊的變數 |
%= |
將符號左邊的值 和右邊的值 進行取餘 操作,最後將結果賦值給左邊的變數 |
5.6 條件(三元)運算符
- 三元運算符的使用格式:
(條件表達式)? 值1 : 值2
-
說明:條件表達式是boolean類型的結果,根據boolean的值選擇值1或值2。如果條件表達式為true運算結果是值1,反之為值2。
-
如果運算後的結果賦給新的變數,要求值1和值2為同種或相容的數據類型
-
舉例說明:
String str1 = (1 > 2)? "true" : "false";
String str2 = (1 < 2)? "true" : "false";
boolean b1 = (1 > 2)? true : false;
boolean b2 = (1 < 2)? true : false;
System.out.println(str1);
System.out.println(str2);
System.out.println(b1);
System.out.println(b2);
6.運算符優先順序
運算符有不同的優先順序,所謂優先順序就是在表達式運算中的運算符順序。
優先順序 | 運算符說明 | Java運算符 |
---|---|---|
1 | 括弧 | () 、[] 、{} |
2 | 正負號 | + 、- |
3 | 單元運算符 | ++ 、-- 、~ 、! |
4 | 乘法、除法、求餘 | * 、/ 、% |
5 | 加法、減法 | + 、- |
6 | 移位運算符 | << 、>> 、>>> |
7 | 關係運算符 | < 、<= 、>= 、> 、instanceof |
8 | 等價運算符 | == 、!= |
9 | 按位與 | & |
10 | 按位異或 | ^ |
11 | 按位或 | ` |
12 | 條件與 | && |
13 | 條件或 | ` |
14 | 三元運算符 | ? : |
15 | 賦值運算符 | = 、+= 、-= 、*= 、/= 、%= |
16 | 位賦值運算符 | &= 、` |