很久沒有寫博客了,,大四狗真的好忙,大學也快畢業啦,疫情期間,在家裏忙着弄畢設,之後會定時更新博客😁 武漢加油!!!中國加油!!!java
Java於1990年末由Sun公司的詹姆斯高斯林團隊開發,原名Oak;1995年改名爲JAVA;後於2009年被Oracle公司收購。Java的三個方向:JAVASE;JAVAEE;JAVAME。數組
面向對象,跨平臺等。網絡
跨平臺指的是跨操做系統,常見的操做系統有Windows,Linux,MacOS等操做系統。Java號稱一次編譯,處處執行,那麼Java語言是如何實現跨平臺的呢?緣由就在於Java引入了JVM機制,JVM(Java Virtual Machine )即Java虛擬機。JVM是Java跨平臺的核心,Java程序通過編譯後生成字節碼文件,而後字節碼文件會加載到JVM上運行將字節碼文件翻譯爲操做系統能夠理解的指令,JVM機制很好的屏蔽了底層操做系統的差別性,這樣就實現了Java的跨平臺。值得注意的是,Java是跨平臺的,可是JVM不是跨平臺的,不一樣的操做系統有不一樣的JVM,JVM是一個機制,不一樣的公司會研發本身的JVM,如IBM等大型公司都有本身的JVM,目前市面上最多見的仍是Sun公司的HotSpot版本。函數
Java內置了已經定義好的關鍵字this
用於定義數據類型的關鍵字 | |||||
---|---|---|---|---|---|
class | interface | byte | short | int | long |
float | double | char | boolean | void | enum |
用於定義數據類型值的關鍵字 | |||||
true | false | null | |||
用於定義流程控制的關鍵字 | |||||
if | else | switch | case | default | while |
do | for | break | continue | return | |
用於定義訪問權限修飾符的關鍵字 | |||||
private | protected | public | |||
用於定義類、函數、變量修飾符的關鍵字 | |||||
abstract | final | static | synchronized | ||
用於定義類與類之間關係的關鍵字 | |||||
extends | implements | ||||
用於定義創建實例、判斷實例的關鍵字 | |||||
new | this | super | instanceof | ||
用於異常處理的關鍵字 | |||||
try | catch | finally | throw | throws | |
用於包的關鍵字 | |||||
package | import | ||||
其餘修飾符關鍵字 | |||||
native | strictfp | transient | volatile | assert |
二進制編碼
碼錶spa
編碼 | 描述 | 佔用字節 |
---|---|---|
Latin-1 也叫ASCII或ISO8859-1 | 只有英文、數字、常見符號 歷史上出現最先的碼錶 | 一個字符佔用一個字節 |
GB2312 | 兼容Latin-1 在Latin-1的基礎上增長了經常使用漢字 由中國國家標準定義 | 一個字符佔用兩個字節 |
GBK | 兼容GB2312,增長了更多的漢字 由中國國家標準定義 | 一個字符佔用兩個字節 |
unicode編碼 | 是一種映射規則,將全世界全部的字符都對應到一個數字上 | 只是爲每一個符號指定了一個編碼,並無指定如何映射成二進制 |
Utf-16/utf-32 | 兼容latin1 是unicode編碼的實現,佔用2/4個字節 | 將unicode定義的符號對應的數字轉爲定長二進制來表明該符號 java語言的底層使用utf-16來表明字符 |
Utf-8 | 兼容latin1 是unicode編碼的實現,是一種變長的編碼形式,用1至4個字節來表示符號,經常使用符號用1個字節表示,次經常使用符號用2個字節,很是用符號用3個字節表示,極特殊符號用4個字節表示。 其中漢字在utf-8碼錶中佔3個字節。 | 將unicode定義的符號對應的數字轉爲變長二進制來表明該符號,節省空間,一般在將數據寫出磁盤 經過網絡發送等操做時優先使用utf-8 |
Java提供了八種基本數據類型,分別爲:操作系統
類型 | 所佔字節 | 默認值 | 取值範圍(有效位) | 備註 |
---|---|---|---|---|
byte(字節型) | 1 | 0 | -2^7 ~ 2^7-1(-128 ~ 127) | |
short(短整型) | 2 | 0 | -2^15 ~ 2^15-1 | |
int(整型) | 4 | 0 | -2^31 ~ 2^31-1 | 全部整數類型的默認值都是int類型 |
long(長整型) | 8 | 0 | -2^63 ~ 2^63-1 | 聲明時需在數據後面加一個字母l或L做爲標記 |
float(單精度浮點型) | 4 | 0.0 | 7~8位 | 聲明時須要在數據後面加一個字母f或F做爲標記 |
double(雙精度浮點型) | 8 | 0.0 | 16~17位 | 浮點型默認值都是double類型 |
char(字符型) | 2 | \u0000 | ||
boolean(布爾類型) | 1 | false |
除了基本數據類型,其餘類型都是引用數據類型,如String,類等。翻譯
自動類型轉換(隱式轉換)code
數值類型轉換:byte --> short --> int --> long --> float --> double
字符類型轉換:char --> int --> long --> float --> double
public class TypeChange { public static void main(String[] args) { byte b1 = 18; // 自動類型轉換 // 數值類型轉換 short s1 = b1; System.out.println(s1); // 18 int i1 = b1; System.out.println(i1); // 18 long l1 = b1; System.out.println(l1); // 18 float f1 = b1; System.out.println(f1); // 18.0 double d1 = b1; System.out.println(d1); // 18.0 // 字符類型轉換 char c1 = 'a'; int i2 = c1; System.out.println(i2); // 97 long l2 = c1; System.out.println(l2); // 97 float f2 = c1; System.out.println(f2); // 97.0 double d2 = c1; System.out.println(d2); // 97.0 } }
強制類型轉換(顯示轉換)
格式: 數據類型 變量名 = (數據類型)數據;
若是是浮點類型強轉爲整型,會直接捨棄小數部分;
強轉以後,值可能會形成精度丟失。
// 強制類型轉換 int i1 = 120; byte b1 = (byte) i1; System.out.println(b1); // 120 double d1 = 12.25; int i2 = (int) d1; System.out.println(i2); // 12 int i3 = 128; byte b2 = (byte) i3; System.out.println(b2); // -128
類型轉換圖:
爲何int類型的128轉爲byte類型時,會變成-128?緣由以下:
運算結果向精度高的方向靠齊
符號左邊爲變量,而且要先初始化後才能執行運算
只針對boolean類型的值做運算,結果也是boolean類型
& :與運算,同真則爲真
|:或運算,有真則爲真
!:非運算,對結果進行取反
^:異或運算,不一樣爲真,相同爲假
&&:短路與運算,結果與&運算相同,區別在於,當&&左邊表達式爲false時,右邊表達式不須要再進行計算
||:短路或運算,結果與|運算相同,區別在於,當||左邊表達式爲true時,右邊表達式不須要再進行計算
基於二進制運算
表達式 ? 表達式1 :表達式2
知足表達式嗎?知足執行表達式1,不知足執行表達式2
if語句
switch語句
switch(表達式){ case 值1: 語句體1; break; case 值2: 語句體2; break; case 值3: 語句體3; break; .... default: 語句體n+1; break; }
switch語句表達式支持byte、short、int、char,從jdk1.5開始支持枚舉類型,從jdk1.7開始自持String類型;case值是常量且不能重複;java中支持省略break,出現case穿透效果;java支持省略default;switch語句結束的標誌:碰見break結束;執行倒代碼最後一行。
for循環
for(初始值;判斷條件;控制條件){ 循環體; }
while循環
初始值 while(判斷條件){ 循環體; 控制條件; }
dowhile循環
初始值; do{ 循環體; 控制條件; }while(判斷條件);
跳轉控制語句
break:在switch語句中用於結束語句,能夠在循環中使用用於結束循環
continue:在循環使用過程中用於跳過當次循環
能夠存儲多個相同數據類型元素的容器
格式一:數據類型[] 數組名 = new 數據類型[數組長度(即數組中元素的個數)]
int[] arr = new int[3]; // 定義一個長度爲3的整型數組 arr[0]; // 數組中的第一個元素 arr[1]; // 數組中的第二個元素 arr[2]; // 數組中的第三個元素 System.out.println(arr); // [I@5e8c92f4
數組名存放的就是數組在java內存空間中的地址值,能夠惟一肯定數組,當數組定義完成以後,java會默認給數組中的元素進行編號,編號(一般稱之爲下標)從0開始。經過數組名和下標能夠惟一肯定數組中的元素。
直接輸出數組名arr時,獲得的結果爲:[I@5e8c92f4
格式二:數據類型[] 數組名 = new 數據類型[]{元素值1,元素值2,元素值3......}
格式三:數據類型[] 數組名 = {元素值1,元素值2,元素值3......}
Java內存分爲:
當咱們在建立一個新的數組時,在Java內存中變換狀況爲:
int[] arr = new int[3]; arr[0] = 10; System.out.println(arr); // [I@5e8c92f4 System.out.println(arr[0]); // 10 System.out.println(arr); // 0