1. jdk,jre,jvm之間的關係 是`Java Java JVM Java JVM`。 可以說 語言是跨平臺的,但 不是。 是`Java JVM`+核心類庫。 是`Java JRE`。 2. Java的分類 JAVASE、JAVAEE、JAVAME 為標準版, 為企業版, 為微型版 3. Ja ...
1. jdk,jre,jvm之間的關係
JVM
是Java
虛擬機,是Java
跨平臺的重要保障,JVM
實現Java
跨平臺的前提,可以針對不同的操作系統,有不同的JVM
。
可以說Java
語言是跨平臺的,但JVM
不是。
JRE
是Java
運行時環境,包含JVM
+核心類庫。
JDK
是Java
開發工具包,包含開發工具+JRE
。
2. Java的分類 - JAVASE、JAVAEE、JAVAME
JavaSE
為標準版,JavaEE
為企業版,JavaME
為微型版
3. Java中關鍵的保留字
Java
中有兩個關鍵字目前沒有用,為goto
和const
,在Java
中,所有的關鍵字為小寫。
4. 標識符
標識符規則:可以使用字母,數字,_ ,以及美元符號 $
,在Java
中可以使用中文命名,但建議不用使用,不能使用關鍵字,也不能以數組開頭,註意區分大小寫,要見名知意
5. 駝峰命名法
- 類名和介面名,如果有多個單片語成,那麼每個單詞的首字母要進行大寫,如
HelloWorld
- 變數名和方法名,如果有多個單片語成,那麼第一個單詞的首字母要小寫,其餘的單詞開頭的首字母要大寫,如
helloWorld
- 常量名,無論有多少個單片語成,所有字母都是大寫,強調一點的是每個單詞之間要以 _ 隔開,如
HELLO_WORLD
- 包名,無論有多少個單片語成,所有的字母都是小寫,強調一點的是每個單詞之間用以 . 隔開,如
cn.dashucoding.com
6. 註解
在Java
中的註解是用來解釋說明代碼的作用,有何用途,作為一名合格的程式員,必須懂得給代碼添加註解。
單行註釋
// 註釋文字
多行註釋
/*註釋文字*/
文檔註釋
/**註釋文字*/
文檔註釋中的文字是可以提取出來形成文檔的
7. 字面量
字面量:指的是在電腦中不可變的值
1.整數常量(所有的整數)
2.小數常量(所有的小數)
3.字元常量(將一個字母、數字、符號,用 ‘’ 標識起來)
4.字元串常量(將一個或者多個字元用 “” 標識起來)
5.布爾常量(true和false)
6.空常量(null)
8. 進位
二進位:以0b/0B作為開頭 (0~1,滿2進1)
八進位:以0作為開頭(0~7,滿8進1)
十進位:沒有特殊標識(0~9,滿10進1)
十六進位:以0X/0x作為開頭(0~9,a~f,滿16進1)
進位間的轉化
十進位轉二進位:不斷除以2,然後取餘數
二進位轉十進位:從最低位依次乘以2的位次次冪,然後求和
同理:
十進位轉其他進位:除以對應的進位數,然後取餘數
其他進位轉十進位:從最低位依次開始,按位次乘以進位的位次次冪,然後求和
二進位轉八進位,也是從低位開始,每三位二進位為一組,產生一個八進位數字,最高位不足三位,就補0,湊齊三位即可。
口訣:三變一
八進位轉二進位,每一位八進位數都會產生三位二進位數字,不足三位就補0即可。
口訣:一變三
同理
二進位轉十六位進位:口訣為四變一
十六位進位轉二進位:口訣為一變四
9. 變數
格式:
數據類型 變數名 = 數據;
int i = 2;
// 變數的聲明
int i;
// 變數的賦值
i = 2;
// 存儲
bit為最小單位,8位為1位元組(byte,簡寫為B)
數據類型
數據類型:基本數據類型 和 引用數據類型
基本數據類型
byte-1 short-2 int-4 long-8
float-4 double-8 char-2 boolean
long---l float---f
引用數據類型
引用數據類型:數組,類,介面
10. 數據類型的轉換
數據類型的轉換:
- 自動類型轉換 / 隱式轉換
- 強制類型轉換 / 顯式轉換
自動類型轉換:小的類型可以自動轉為大的類型
char
可以轉換為int
,long
可以轉換為float
,其他往前轉換,可能產生精度損失
// short char
// ok 可行 字面量如果在範圍內允許轉化
short a = ‘b’;
char c = 97;
// not 不可行 可能超過範圍,所以不允許轉化
char c = ‘a’;
short b = c;
強制類型轉換:大類型強制轉化為小類型,會可能會導致數據丟失精度
// 強制類型轉換
double d = 3.14
int i = (int)d;
11. 運算符
+ - * / % ++ --
++ / -- 自增/自減
int j = i++; // j = i ; i++
int j = ++i; // ++i ; j = ++i
賦值運算符
= += -= *= /= %= &= |= ^= <<= >>= >>>=
關係運算符
> < >= <= == !=
邏輯運算符
& 與
Or 或
Not 非
^ 亦或
&& 短路與
|| 短路或
短路 表示如果前面的表達式正確,後面的就不再運行
&&:前邊的表達式結果為false,後面的就不再運行
||:前面為true,後面就不再運行
位運算
& | ^ << 左移 >> 右移 >>> 無符號右移 ~ 取反
&,將1看作true,將0看作false,0&任何數為0,1&奇數為1,1&偶數為0。
| ,有1為1。
三元運算符
格式:
邏輯值?表達式1:表達式2
運算符的優先順序
() ~ ++ -- ! * / % + - << >> >>> 關係 邏輯 & | ^ 三元 賦值
一元運算 > 二元運算 > 三元運算 > 賦值
12. 流程式控制制
if,if-else, if-else if
分支結構
if(邏輯值){
代碼塊;
}
if(邏輯值){
代碼塊;
} else {
代碼塊;
}
switch(邏輯值){
case 值:
代碼塊;
break;
case 值:
代碼塊;
break;
...
}
switch
支持byte/short/char/int/String
while(邏輯值){
代碼塊;
}
do{
代碼塊;
} while(邏輯值);
while, do-while
for(定義迴圈變數; 控制條件; 改變迴圈變數){
代碼塊;
}
13. break和continue
break:
表示終止當前的一層迴圈結構
continue:
表示跳過當前一次迴圈繼續下一個迴圈
14. 數組
格式:
數據類型[] 數組名 = new 數據類型[長度];
數據類型[] 數組名 = new 數據類型[]{元素1, 元素2, 元素3...};
int[] arr = new int[]{2,3,4,5,6};
int[] arr = {2,5,7,8,9};
數組的應用
- 數組名[下標]
- 數組名.length
- 遍曆數組
- 獲取數組中最值
- 數組的排序
- 反轉數組
- 數組元素的查找
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
for(int i : arr){
System.out.println(i);
}
// 冒泡排序
for(int i = 1; i < arr.length; i++){
for(int j = 1; j <= arr.length - i; j++){
if(arr[j - 1] > arr[j]){
int temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
// 選擇排序
for(int i = 1; i < arr.length ; i++){
for(int j = i; j < arr.length; j++){
if(arr[i - 1] > arr[j]){
int temp = arr[i - 1];
arr[i - 1] = arr[j];
arr[j] = temp;
}
}
}
數組:
Arrays.sort
,Arrays.toString
,System.arraycopy
,Arrays.copyOf
15. 記憶體
Java
記憶體:
棧記憶體、堆記憶體、方法區、本地方法棧、PC計數器(寄存器)
棧記憶體用來存儲的是變數
堆記憶體用來存儲的是對象
16. 方法
格式:
修飾符 返回值類型 方法名(參數列表){
方法體;
return 返回值;
}
方法的重載
方法名相同但參數列表不同
方法的傳值
方法的傳值,基本類型傳實際值,引用類型傳地址
17. 快捷鍵
Ctrl + x 剪切
Alt + / 快捷提示鍵
Ctrl + Shift + o 導包
Ctrl + Shift + f 調整格式
Ctrl + F 搜索
Ctrl + D 刪除一行
18. 成員變數和局部變數
- 成員變數在類中,局部變數在方法中
- 成員變數作用在整個類中,局部變數只能在它的方法中,或者語句中
- 成員變數存儲在堆記憶體中,並自動賦予預設值;
- 局部變數存儲在棧記憶體中,不自動賦予預設值
構造方法,與類名同名,沒有返回值,構造方法可以重載
this
關鍵字,代表本類中的對象的引用
可以用this
調用本來中的對應形式的構造方法
面向對象的特征為封裝,繼承,多態
結語
- 下麵我將繼續對
Java
、Android
中的其他知識 深入講解 ,有興趣可以繼續關註 - 小禮物走一走 or 點贊