1. Java標識符規則
1.1 組成規則
1.2 注意事項
- 不能以數字開頭
- 不能是Java中的關鍵字
- 區分大小寫
- 不能有空格
1.3 命名規範【必須見名知意】
- 下劃線式命名:my_name
- 駝峯式命名:myName
- 類,接口命名:必須是大寫字母開頭,好比PersonActivity
- 方法,變量【字符串】命名:getData(),otherName
- 常量命名:通常全是大寫,好比MAX_VALUE
2. 常量和變量
2.1 什麼是常量和變量
- 其值不能夠改變的稱之爲常量
- 其值會發生變化的稱之爲變量
2.2 常量有哪些
- 字符串常量 用雙引號包括的 "hello world"
- 整型常量 全部的整數 199
- 小數常量 全部的小數 4.50
- 字符常量 用單引號包括的 'a'
- 布爾常量 true和false
- 空常量 null
2.3 變量
- 用來描述值能夠變化的量,好比室外溫度,App活躍用戶量等
3. 進制
3.1 進制有哪些
- 二進制:0和1 前綴0B或者0b 好比:0B1001 轉爲十進制是9
- 八進制:0-7 前綴0 好比:0103
- 十進制【咱們經常使用的】:0-9 沒有前綴
- 十六進制:0-9 和 A-F 前綴0x或者0X 好比:0x123
- 進制轉化:任何進制轉化爲十進制公式:係數 * 底數 ^ 指數
0b1010 = 1 * 2^3 + 0 *2^2 + 1*2^1 + 0*2^0
= 8 + 0 + 2 + 0
= 10
0123 = 1*8^2 + 2*8^1 + 3*8^0
= 64 + 16 + 3
= 83
0x123 = 1*16^2 + 2*16^1 + 3*16^0
= 256 + 32 + 3
= 291
3.2 補碼
正數的補碼和原碼相同算法
5
原碼:0000 0101
補碼:0000 0101
* 負數的補碼是它的反碼加1
-5:
原碼:1000 0101
反碼:1111 1010
+ 1
------------------
補碼 1111 1011
4. 字符編碼
常見的字符編碼數組
- ASCII碼
- GBK碼
- Unicode碼【佔2個字節】
5. 運算符
5.1 運算符有哪些?
- 算術運算符
- 賦值運算符
- 關係運算符
- 邏輯運算符
- 三目運算符
- 特殊運算符:位運算符
5.2 算術運算符
,- , * , / , %【取餘】 , ++【自加】, --【自減】ide
5.3 賦值運算符
= , += , -= , *= , /= , %=函數
5.4 關係運算符
== , > , < , >= , <= , !=編碼
5.5 邏輯運算符
& ,^ ,| ,&& ,|| ,! , ^code
5.6 三目運算符
a == b ? c : d
格式:(條件表達式)?表達式1:表達式2對象
5.7 位運算符
& , | , ^ , ~ , << , >> , >>>索引
6. Java基本語句結構
6.1 語句結構種類
6.2 順序結構
從上到下依次執行接口
6.3 選擇結構【能夠嵌套】
if , if else , if else if …… else
switch case【支持byte,short,char,int,String】內存
6.4 循環結構
for
for(初始化語句;判斷條件語句;控制條件語句) {
循環體語句;
}
第一步:先執行初始化語句,只執行一次
第二步:執行判斷條件語句
第三部:執行循環體語句
第四步:執行控制條件語句,而後再執行循環體語句【循環】
while
初始化語句;
while(判斷條件語句) {
循環體語句;
控制條件語句;
}
do while
do {
循環體語句;
}while((判斷條件語句);
7. Java方法
7.1 定義
方法就是完成特定功能的代碼塊
- 系統方法,只須要會使用,不須要知道內部的結構
- 自定義方法:方法的內部實現須要咱們來寫
- 方法內部不能再嵌套方法
7.2 格式
8.數組
8.1 數組概念
數組是一個容器,能夠存儲多個變量,這些變量數據類型要一致
數組既能夠存儲基本數據類型,也能夠存儲引用數據類型
8.2 一維數組
數組定義格式
格式1:數據類型【】 數組名
格式2:數據類型 數組名【】
int[] a; 定義了一個int類型的數組a;
int a[]; 定義了一個int類型的a數組;
推薦使用第一種定義方式。
數組的初始化
- Java中的數組必須先初始化,而後才能使用。
- 所謂初始化:就是爲數組中的數組元素分配內存空間,併爲每一個數組元素賦值。
初始化分類:
- a:動態初始化: 只指定長度,由系統給出初始化值
- b:靜態初始化: 給出初始化值,由系統決定長度
- 注意事項:這兩種方式,只能使用一種,不能進行動靜結合
8.3 二維數組
數組定義格式
- 數據類型[][] 變量名 = new 數據類型[m][n];
- m表示這個二維數組有多少個一維數組
- n表示每個一維數組的元素個數
舉例:
int[][] arr = new int[3][2];
定義了一個二維數組arr
這個二維數組有3個一維數組,名稱是arr[0],arr[1],arr[2]
每一個一維數組有2個元素,能夠經過arr[m][n]來獲取,表示獲取第m+1個一維數組的第n+1個元素
9.Java的內存分配以及棧和堆的區別
9.1 先了解幾個概念
A:棧: 存放的是局部變量
局部變量:在方法定義或者方法聲明上的變量都是局部變量。
B:堆: 存放的是全部new出來的東西
特色:
a: 每個new出來的東西都會爲其分配一個地制值。
b: 每個變量都有一個默認的值
byte,short,int,long -- 0
float,double -- 0.0
char -- '\u0000'
boolean -- false
引用數據類型 -- null
c: 使用完畢就變成了垃圾,等待垃圾回收器對其回收
C:方法區:(面向對象部分講解)
D:本地方法區:(和系統相關)
E:寄存器:(cpu使用)
10. 使用switch和if-else區別
10.1 switch語句特色
- 使用switch語句時,要注意表達式必須是符合byte,char,short,int或枚舉類型的表達式,而不能使用浮點類型或long類型。
- switch語句將表達式的值依次與每一個case子語句中的常量值相比較。若是匹配成功,則執行該case語句中的語句,直到遇到break語句爲止。
- default語句是可選的,當表達式的值與任何一個case語句都不匹配時,就執行default後的語句。
10.2 switch語句與if-else比較
- if-else只是單純地一個接一個比較;if...else每一個條件都計算一遍;
- 使用了Binary,Tree算法;絕大部分狀況下switch會快一點,除非是if-else的第一個條件就爲true。編譯器編譯switch與編譯if...else...不一樣。無論有多少case,都直接跳轉,不需逐個比較查詢;switch只計算一次值,而後都是test , jmp……有不少else if的時候,用switch case比較清晰
- switch...case與if...else,if的根本區別在於,switch...case會生成一個跳轉表來指示實際的case分支的地址,而這個跳轉表的索引號與switch變量的值是相等的。從而,switch...case不用像if...else那樣遍歷條件分支直到命中條件,而只需訪問對應索引號的表項從而到達定位分支的目的。