整理一些以前學習Java基礎語法的部分知識點。java
常量:是指在Java程序中固定不變的數據。shell
類型 | 含義 | 數據舉例 |
---|---|---|
整數常量 | 全部的整數 | 0,1,567,-9 |
小數常量 | 全部的小數 | 0.0, -0.1, 2.55 |
字符常量 | 單引號引發來,只能寫一個字符,必須有內容 | 'a' , ' ', '好' |
字符串常量 | 雙引號引發來,能夠寫多個字符,也能夠不寫 | "A" ,"Hello" ,"你好" ,"" |
布爾常量 | 只有兩個值(流程控制中講解) | true , false |
空常量 | 只有一個值(引用數據類型中講解) | null |
變量:常量是固定不變的數據,那麼在程序中能夠變化的量稱爲變量。數組
Java的數據類型分爲兩大類:工具
四類八種基本數據類型:學習
數據類型 | 關鍵字 | 內存佔用 | 取值範圍 |
---|---|---|---|
字節型 | byte | 1個字節 | -128~127 |
短整型 | short | 2個字節 | -32768~32767 |
整型 | int(默認) | 4個字節 | -2的31次方~2的31次方-1 |
長整型 | long | 8個字節 | -2的63次方~2的63次方-1 |
單精度浮點數 | float | 4個字節 | 1.4013E-45~3.4028E+38 |
雙精度浮點數 | double(默認) | 8個字節 | 4.9E-324~1.7977E+308 |
字符型 | char | 2個字節 | 0-65535 |
布爾類型 | boolean | 1個字節 | true,false |
Java中的默認類型:整數類型是 int 、浮點類型是 double 。命令行
Java程序中要求參與的計算的數據,必需要保證數據類型的一致性,若是數據類型不一致將發生類型的轉換。code
自動轉換:將 取值範圍小的類型 自動提高爲 取值範圍大的類型 。blog
範圍小的類型向範圍大的類型提高, byte、short、char 運算時直接提高爲 int 。索引
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
強制類型轉換:將 取值範圍大的類型 強制轉換成 取值範圍小的類型 。接口
三元運算符格式:
數據類型 變量名 = 布爾類型表達式?結果1:結果2
JShell腳本工具是JDK9的新特性
何時會用到 JShell 工具呢,當咱們編寫的代碼很是少的時候,而又不肯意編寫類,main方法,也不肯意去編譯和運 行,這個時候可使用JShell工具。
啓動JShell工具,在DOS命令行直接輸入JShell命令。
接下來能夠編寫Java代碼,無需寫類和方法,直接寫方法中的代碼便可,同時無需編譯和運行,直接回車便可
下面的程序有問題嗎?
public static void main(String[] args){ short s = 1; s+=1; System.out.println(s); }
分析: s += 1 邏輯上看做是 s = s + 1 計算結果被提高爲int類型,再向short類型賦值時發生錯誤,由於不能將取值範圍 大的類型賦值到取值範圍小的類型。可是, s=s+1進行兩次運算 , += 是一個運算符,只運算一次,並帶有強制轉換的特色, 也就是說 s += 1 就是 s = (short)(s + 1) ,所以程序沒有問題編譯經過,運行結果是2.
下面的程序有問題嗎?
public static void main(String[] args{ byte b1=1; byte b2=2; byte b3=1 + 2; byte b4=b1 + b2; System.out.println(b3); System.out.println(b4); }
分析: b3 = 1 + 2 , 1 和 2 是常量,爲固定不變的數據,在編譯的時候(編譯器javac),已經肯定了 1+2 的結果並沒 有超過byte類型的取值範圍,能夠賦值給變量 b3 ,所以 b3 = 1 + 2 是正確的。
反之, b4 = b2 + b3 , b2 和 b3 是變量,變量的值是可能變化的,在編譯的時候,編譯器javac不肯定b2+b3的結果是什 麼,所以會將結果以int類型進行處理,因此int類型不能賦值給byte類型,所以編譯失敗。
方法重載:指在同一個類中,容許存在一個以上的同名方法,只要它們的參數列表不一樣便可,與修飾符和返 回值類型無關。
參數列表:個數不一樣,數據類型不一樣,順序不一樣。
重載方法調用:JVM經過方法的參數列表,調用不一樣的方法。
數組概念: 數組就是存儲數據長度固定的容器,保證多個數據的數據類型要一致。
方式一
格式:
數組存儲的數據類型[] 數組名字 = new 數組存儲的數據類型[長度];
舉例:
int[] arr = new int[3];
方式二
格式:
數據類型[] 數組名 = new 數據類型[]{元素1,元素2,元素3...};
舉例:
int[] arr = new int[]{1,2,3,4,5};
方式三
格式:
數據類型[] 數組名 = {元素1,元素2,元素3...};
舉例:
int[] arr = {1,2,3,4,5};
爲了提升運算效率,就對空間進行了不一樣區域的劃分,由於每一片區域都有特定的處理數據方式和內存管理方式。
一個數組內存圖
public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr);//[I@5f150435 }
以上方法執行,輸出的結果是[I@5f150435,是數組在內存中的地址。new出來的內容,都是在堆 內存中存儲的,而方法中的變量arr保存的是數組的地址。
輸出arr[0],就會輸出arr保存的內存地址中數組中0索引上的元素
最小索引超過了最大索引,數組反轉操做結束
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; for(int min = 0, max = arr.length - 1; min <= max; min++, max--){ int temp = arr[min]; arr[min] = arr[max]; arr[max] = temp; } for(int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } }