本文內容構架:
1.關鍵字
定義:被Java語言賦予特定含義的單詞,組成關鍵字的字母全部小寫
注:goto和const作為保留字在JDK的新版本中可能提升為關鍵字,但目前并不使用。
2.標識符
定義:給變量,方法,類等起名字時使用的字符序列
組成規則
英文大小寫字母
數字字符
$和_
注意事項
不能以數字開頭
不能是Java中的關鍵字
區分大小寫
常見命名規則
- 包(其實就是文件夾,用于解決相同類名問題)
acamy,cn.acamy - 類或者接口
Student,HelloWorld - 方法和變量
name,main,studentName - 常量
MAX,STUDENT_MAX_AGE
3.注釋
定義:用于解釋說明程序的文字
分類
-
單行注釋
格式: // 注釋文字
-
多行注釋
格式:/* 注釋文字 */
-
文檔注釋
格式:/** 注釋文字 */
注:對于單行和多行注釋,不會被JVM解釋執行.對于文檔注釋,注釋內容可以被JDK提供的工具 javadoc 所解析,生成一套以網頁文件形式體現的該程序的說明文檔。
4.常量
定義: 在程序執行的過程中其值不可以發生改變
分類
字面值常量
- (a) 字符串常量: 用雙引號括起來的內容
- (b) 整數常量: 所有整數 eg:12,23
- (c) 小數常量: 所有小數 eg:12.34,56.78
- (d) 字符常量: 用單引號括起來的內容 eg:‘a’,’A’,’0’
- (e) 布爾常量: 較為特有,只有true和false
- (f) 空常量: null(數組部分講解)
- (g)自定義常量(面向對象部分講)
5.變量
定義:在程序執行的過程中,在某個范圍內其值可以發生改變的量,如同數學中的未知數
格式
數據類型 變量名 = 初始化值;
6.數據類型
定義:Java語言是強類型語言,對于每一種數據都定義了明確的具體數據類型,在內存總分配了不同大小的內存空間
分類
- 注:String是字符串類
大小
轉換
boolean類型不能轉換為其他的數據類型
-
默認轉換
byte,short,char—int—long—float—double
byte,short,char相互之間補轉換,他們參與運算首先轉換為int類型
-
強制轉換
目標類型 變量名=(目標類型)(被轉換的數據);
7. 運算符
7.1 算術運算符
7.2 賦值運算符
-
符號: = , +=, -=, *=, /=, %=
=為基本的賦值運算符,其他的為擴展的賦值運算符
7.3 比較運算符
7.4 邏輯運算符
-
“&”和“&&”的區別:
單&時,左邊無論真假,右邊都進行運算;
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那么右邊不參與運算。即遵循短路規則。
“|”和“||”的區別同理,雙或時,左邊為真,右邊不參與運算。
7.5 位運算符
<<:就是將左邊的操作數在內存中的二進制數據左移右邊操作數指定的位數,右邊被移空的部分補0。相當于乘與2的倍數
>>:右移稍微復雜一點,如果最高位是0,左邊被移空的位就填入0;如果最高位是1,左邊被移空的位就填入1。相當于除以2的倍數
>>>:無論最高位是1還是0,左邊被移空的高位都填入0。
7.6 三目運算符
-
格式
(關系表達式) ? 表達式1:表達式2;
如果條件為true,運算后的結果是表達式1;
如果條件為false,運算后的結果是表達式2;
-
示例:
獲取兩個數中大數。
int x=3,y=4,z;`
z = (x>y)?x:y; //z變量存儲的就是兩個數的大數。
8.語句
8.1 順序結構
定義: 程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先后順序,依次執行,程序中大多數的代碼都是這樣執行的。
總的來說:** 寫在前面的先執行,寫在后面的后執行. **
8.2 選擇結構
8.2.1 if語句
- 格式
if(關系表達式1) {
語句體1;
}else if (關系表達式2) {
語句體2;
}
else {
語句體n+1;
}
- 流程圖
8.2.3 switch語句
switch(表達式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
- 流程圖
** 注意事項: **
case后面只能是常量,不能是變量,而且,多個case后面的值不能出現相同的
- default可以省略嗎?
可以省略。一般不建議。除非判斷的值是固定的。(單選題) - break可以省略嗎?
可以省略,一般不建議。否則結果可能不是你想要的 - default的位置一定要在最后嗎?
可以出現在switch語句任意位置。 - switch語句的結束條件
遇到break
執行到程序的末尾
8.3 循環結構
循環語句可以在滿足循環條件的情況下,反復執行某一段代碼,這段被重復執行的代碼被稱為循環體語句,當反復執行這個循環體時,需要在合適的時候把循環判斷條件修改為false,從而結束循環,否則循環將一直執行下去,形成死循環。
-
循環語句的組成
(a) 初始化語句:
一條或者多條語句,這些語句完成一些初始化操作。
(b)判斷條件語句:
這是一個boolean 表達式,這個表達式能決定是否執行循環體。
(c) 循環體語句:
這個部分是循環體語句,也就是我們要多次做的事情。
(d)控制條件語句:
這個部分在一次循環體結束后,下一次循環判斷條件執行前執行。通過用于控制循環條件中的變量,使得循環在合適的時候結束。
8.3.1 for語句
-
格式
for(初始化語句;判斷條件語句;控制條件語句) {
循環體語句;
}
-
執行流程圖
-
注意事項
(a)判斷條件語句的結果是一個boolean類型
(b)循環體語句如果是一條語句,大括號可以省略;如果是多條語句,大括號不能省略。建議永遠不要省略。
(c)一般來說:有左大括號就沒有分號,有分號就沒有左大括號
8.3.2 while語句
while(判斷條件語句) {
循環體語句;
控制條件語句;
}
-
流程圖
8.3.3 do...while語句
do {
循環體語句;
控制條件語句;
} while((判斷條件語句);
-流程圖
8.3.4 跳轉和中斷
break中斷當前循環體, continue中斷當前次循環,繼續下次循環,return結束方法,返回到上層調用的方法.形象來說,這三者都是具有一定的殺傷力,大小排序為return > break > continue.
9.方法
方法就是完成特定功能的代碼塊
修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2…) {
函數體;
return 返回值;
}
)
9.1 修飾符的訪問能力
9.2 重載與重寫
(a)重載(overload)
讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。
重載Overloading是一個類中多態性的一種表現。
(b)重寫(override)
如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 .
(c) 對比
10.數組
定義:數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。
-
格式
數據類型[] 數組名; //格式1
數據類型 數組名[]; //格式2
-
初始化
數據類型[] 數組名 = new 數據類型[]{元素1,元素2,…}; // 靜態初始化
數據類型[] 數組名 = new 數據類型[數組長度]; //動態初始化
-
二維數組
定義:二維數組其實就是一個元素為一維數組的數組
數據類型[][] 變量名 = new 數據類型[m][n];//格式1
數據類型[][] 變量名 = new 數據類型[m][];//格式2
數據類型[][] 變量名 = new 數據類型[][]{{元素…},{元素…},{元素…}};//格式3
數據類型[][] 變量名 = {{元素…},{元素…},{元素…}};//格式3簡化版
注:格式2和格式3都能構造出鋸齒數組,即每行的元素個數可以不同。