Java基本程式設計——基礎語法
1.資料型別
1.1資料型別分為兩種:基本資料型別和引用資料型別
1.1—1 基本資料型別有8種:
四種整型(byte,int , short , long)
兩種浮點型(float,double)
一種字元型(char)
1.1—2 引用資料型別 :類(class),介面(interface),陣列(array),String;
1.2 裝包與拆包
JAVA給簡單型別都提供了對應的類型別(包裝型別)
簡單型別 | byte | char | short | int | long | float | double | boolean |
包裝型別 | Byte | Character | Short | Integer | Long | Float | Double | Boolean |
以Interger為例說明:
public static void main(String[] args) { Integer i = 100; Integer i2 = 100; System.out.println(i == i2); //true Integer i3 = 200; Integer i4 = 200; System.out.println(i3 == i4);//flase }
Integer與Integer比較的時候,由於直接賦值的時候會進行自動的裝箱,需要注意兩個問題,一個是-128<= x<=127的整數,將會直接快取在IntegerCache中,當賦值在這個區間的時候,不會建立新的Integer物件,而是從快取中獲取已經建立好的Integer物件。二是當大於這個範圍的時候,直接new Integer來建立Integer物件。
所以第一個會輸出true,第二個是錯誤的
integer中的裝包程式碼
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
2.變數與常量
2.1 變數的宣告和定義
1.宣告變數:
資料型別 變數名;
2.變數賦值:
變數=要賦的值;
變數命名規則:變數名只能是字母(a-z A-Z),數字(0-9),下劃線(_)的組合,並且之間不能包含空格,數字不能放在變數名首位;
變數名不能使用程式語言的保留字;
2.2變數分類
變數有:例項變數,靜態變數,區域性變數;
需要注意的是:區域性變數使用 必須初始化 ;
靜態變數不屬於物件 ,只屬於類本身;
JVM執行時資料區: 例項變數 放在 其中的堆裡;
靜態變數放在其中的方法區裡;
區域性變數放在虛擬機器棧裡;
2.3 常量
利用關鍵字final指示常量時,表示這個常量只能被賦值一次,一旦賦值,無法更改。
常量編譯時 統一進行處理;
變數 在執行時,才能知道它的值;
3.運算子
3.1常用運算子優先順序
==注意的是:>>>運算子用填充高位,>>運算子用符號位填充高位,沒有<<<運算子。=
對於用strictfp關鍵詞標記的方法必須使用嚴格的浮點計算。
3.2以自增運算子為例
public static void main(String[] args) {
int a=10;
int b=10;
int c=a++;
int d=++a;
System.out.println(c);
System.out.println(d);
}
上面中 輸出c的值為10;d的值為11;
因為c=a++ ,先把a的值賦給c,在執行a=a+1操作;
而d=++b;是先執行b=b+1操作,再把b的值賦值給c;
public static void main(String[] args){
int a=10;
a=a++;
System.out.println(a);
}
這個輸出a的值為10;
第一步把常量10放入運算元棧中,
第二步,執行int a=10,把運算元棧頂的元素10放入區域性變量表索引的位置中,
第三步,執行a的值賦值給a,把區域性變量表索引的值載入到運算元棧中,
第四步,執行a++,把區域性變量表索引的元素值加1,變成了11,
然後把運算元中的棧頂元素10,放入區域性變量表索引的位置中a,即 把原來的11覆蓋成10了;
第五步,載入a的值到運算元棧中,用列印語句列印時,打印出來就為10。