005Java學習--資料型別及拓展
技術標籤:Java學習之旅
文章目錄
資料型別
強型別語言(安全性高,速度慢)
要求變數的使用要嚴格符合規定,所有變數都必須先定義後才能使用。
弱型別語言
Java的資料型別分為兩大類
-
-
數值型別
-
整數型別
-
byte佔一個位元組範圍
-
short佔兩個位元組範圍
-
int佔四個位元組範圍(最常用)
-
long佔八個位元組範圍(long型別要在數字後面加個L)
byte num1 = 127; short num2 = 32767; int num3 = 2147483647; long num4 = 30L; long num5 = 9223372036854775807L;
ps:範圍可以只記大概,具體可以通過各自對應的包裝類名Crtl+左鍵,點選檢視int–>Integer,char–>character,其他的包裝類都是把原始類中的首字母大寫…
-
-
浮點型別
-
float佔四個位元組(浮點數預設double型別,float型別要在數字後面加個F)
float num6 = 30.2F;
-
double佔八個位元組
-
-
位元組型別 char佔兩個位元組(字元!!!不是字串)
char name1 = 'A'; char name2 = '張'; //字串,String不是關鍵字,是 類 String name3 = "張三"
-
-
boolean型別:佔一位,其值只有true和false兩個
//布林值 boolean flag = true; //boolean flag = false;
位元組(byte)
計算機資料處理的基本單位,用大寫B來表示’位(bit)
是計算機內部資料儲存的最小單位`,1B = 8b
-
-
引用型別(reference type)
-
類
-
介面
-
陣列
-
拓展
整數進位制
二進位制0b,八進位制0,十六進位制0x
public class Demo01 {
public static void main(String[] args) {
int i = 10; //十進位制
int i2 = 010; //八進位制0
int i3 = 0x10; //十六進位制0x
int i4 = 0b10; //二進位制0b
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
}
}
執行結果
10
8
16
2
浮點數
銀行業務怎麼表示?
public class Demo02 {
public static void main(String[] args) {
float f = 0.1f;
double d = 1.0/10;
System.out.println(f == d);
System.out.println(f);
System.out.println(d);
System.out.println("========================================");
float d1 = 233333333333333333F;
float d2 = d1 + 1;
System.out.println(d1 == d2);
}
}
float 和double 是有精度問題的,上面程式碼中,我們直接計算的話,預期fd為true,d1d2為false,然而結果恰恰相反
輸出結果
false
0.1
0.1
=============================================
true
最好完全避免使用浮點數進行比較
最好完全避免使用浮點數進行比較
最好完全避免使用浮點數進行比較
所以銀行業務與錢有關的用BigDecimal(數學工具類)。
字元
public class Demo03 {
public static void main(String[] args) {
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //強制轉換
System.out.println(c2);
System.out.println((int)c2); //強制轉換
}
}
輸出結果
a
97
中
20013
所有的字元本質還是數字
Unicode編碼
如果有一種編碼,將世界上所有的符號都納入其中,無論是英文、日文、還是中文等,大家都使用這個編碼表,就不會出現編碼不匹配現象。每個符號對應一個唯一的編碼,亂碼問題就不存在了。這就是Unicode編碼。
Unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。每個符號的編碼都不一樣,比如,U+0639表示阿拉伯字母Ain,U+0041表示英語的大寫字母A,“漢”這個字的Unicode編碼是U+6C49。
Unicode固然統一了編碼方式,但是它的效率不高,比如UCS-4(Unicode的標準之一)規定用4個位元組儲存一個符號,那麼每個英文字母前都必然有三個位元組是0,這對儲存和傳輸來說都很耗資源。
char = '\u0061'; System.out.printIn(c3); //輸出結果:a
轉義字元
\u :\uxxxx Unicode轉義字元,其中xxxx是十六進位制數字的字串表示形式
\n :換行
\t :水平製表符table
…