java
撰寫java程式流程
- 建立文本檔案,將擴展名撰寫為xxx.java;
- 使用記事本/Notepad++的方式打開檔案,撰寫java代碼進行保存;
- 啟動dos視窗,并切換到.java檔案所在的路徑中【也可以打開.java檔案所在的檔案夾位置,在檔案夾欄直接輸入cmd即可】;
- 輸入javac xxx.java 進行編譯,生成xxx.class的位元組碼檔案;
- 使用Java xxx進行解釋執行,并列印結果
Java跨平臺原理
- java位元組碼可以通過JVM翻譯為具體平臺能夠執行的機器命令,由于sun定義了JVM規范,且不同佛如作業系統大多提供了JVM實作,使得相同的一個位元組碼檔案可以在不同佛如系統上運行,讓Java擁有了“一次編譯,到處使用”的美名,
資料型別:
-
基本資料型別:byte、short、int、long、float、double、boolean、char
-
參考資料型別:陣列、類、介面、列舉、標注
進制轉換
-
十進制轉二進制
①除2取余法:將十進制整數不斷額除以2取出余數,余數逆序排序,
? 例: 45轉二進制 結果為:101101
? 2|___45 1
? 2|___22 0
? 2|___11 1
? 2|____5 1 ↑
? 2|____2 0 |
? 2|____1 1 ↑
? 0
②拆分法:將十進制整數拆分為若干個二進制權重的和,有權重位的寫1,否則為0,
? 45 = >> 32 + 8 +4 +1 == >> 2? + 23 + 22 + 2? == >> 1 0 1 1 0 1
-
負十進制轉換為二進制的方式
先將十進制的絕對值轉換為二進制,再進行按位取反再加1
負數需要補碼:按位取反,再加1
? 按位取反:1101 0010 -45 :1101 0011
? 再加1 : 1101 0011 45: 0010 1101
- 非負數所能表示的整數范圍:0000 0000 ~0111 1111 => 0~127 =>0 ~2?-1
- 負數所能表示的整數范圍: 1000 0000 ~ 1111 1111 => 1000 0000 =>-128 ~ -1
? 1000 0000:
【減一:0111 1111】
? 【按位取反:1000 0000】
? 【十進制表示:128】
? 【加上負號:-128】
? 1111 1111:
【減一:1111 1110】
? 【按位取反:0000 0001】
? 【十進制表示:1】
? 【加上負號:-1】
- 單個位元組表示的整數范圍是:-128 ~ 127 => -2? ~ 2?-1
基本資料型別之間的轉換
-
從小型別可以自動轉換為大型別
-
強制型別轉換,從大型別轉小型別:目標型別 變數名 = (目標型別)源型別變數名;【強制轉換是有風險的】
? 如:byte + int 相加 結果是int型,強行byte = int ,int 轉 byte 可能會有損失,這時就可以使用強制型別轉換,將int 型別轉換為byte
? byte + byte 相加 結果還是int型別,這是編譯器的優化結果
-
筆試考點:byte b1 =10;
? b1 += 2;//等價于b1 = (byte)(b1 + 2)
移位運算子
左移運算子:<< ,將資料的二進制位向左移動,右邊用0補充
右移運算子: >>,將資料的二進制位向右移動,左邊使用符號位補充1、0
邏輯右移運算子(無符號右移):>>>,將資料的二進制位向右移動,左邊用0補充
運算子
? 算數運算子、字串連接符、關系運算子、自增減運算子、邏輯運算子、條件運算子( ?: )、賦值運算子、移位運算、位運算子
? 運算子的優先級:()優先級最高, = 優先級極低
Java的分支結構
if分支結構、if else分支結構、if else if else分支結構、switch case分支結構
Java的回圈結構
for回圈、while回圈、do while回圈、雙重for回圈
陣列
一維陣列:
? 陣列名:記錄一維陣列在記憶體空間中的地址資訊,便于下次訪問
? 陣列元素:指存放在陣列中的資料內容
? 陣列長度:指陣列中最多可以存放的元素個數,通常可以使用 陣列名.length獲取
? 陣列下標:指陣列元素在陣列中的編號,從0開始到長度-1
- 基本型別的陣列創建后,其元素的初始值:byte、short、char、int、long為0;float和double為0.0;boolean為false,
? 語法格式: 如:① 動態方式: 宣告陣列,但沒有初始化陣列:
? int[ ] arr = new int[長度]
? ② 靜態方式: 陣列宣告的同時,對陣列元素進行初始化:
? 資料型別[ ] 陣列名稱 = {初始值1,初始值2,.......}
二維陣列
-
二維陣列本質上就是由多個一維陣列疊起來的陣列,二維陣列中每個元素都是一維陣列,而一維陣列中的每個元素才是資料內容,
-
宣告: 資料型別[ ] [ ] 陣列名稱 = new 資料型別 [行數] [列數];
? 如:int[ ] [ ] arr = new int [長度] [ ];
? arr.length代表二維陣列arr的長度,就是元素個數(二維陣列中每個元素都是一維陣列),就是行數;
? arr[0].length代表二維陣列中第一個元素的長度,即一維陣列的長度,就是第一行的列數,
宣告一個陣列,就是在堆區開辟(new)一塊空間,用來存盤陣列中的元素,再將其地址存盤在堆疊區的變數中,
記憶體結構之堆區:JVM會在其記憶體空間中開辟一個稱為“堆”的存盤空間,這部分空間用于存盤使用了new 關鍵字創建的陣列和物件,
記憶體結構之堆疊區:用于存放程式運行程序當中所有的區域變數,一個運行的java程式從開始到結束會有多次變數的宣告,
陣列的優缺點
- 可以直接通過下標(或索引)的方式訪問指定位置的元素,速度快,
- 同一陣列要求所有元素的型別相同
- 陣列要求記憶體空間連續,并且長度一旦確定就不能修改
- 增加和洗掉元素時,移動元素量太大,效率低
陣列的復制
int[] arr = {11,22,33,44,55,22};
int[] brr = new int[3];
brr = arr;
表示陣列名arr的記憶體空間中存放的是資料在堆區中的記憶體地址資訊,
賦值后讓brr變數中存放了arr所指向堆區的記憶體地址,也就是讓brr和arr指向了同一塊堆區空間
本質上就是改變指向而已
java的陣列工具類
- java.util.Arrays類可以實作對陣列中元素的遍歷、查找、排序、復制等操作,
- 具體參考jdk11 中文版api【在線api:https://www.runoob.com/manual/jdk11api/index.html 】
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225466.html
標籤:Java
