[JavaSE學習之旅]資料型別擴充套件
阿新 • • 發佈:2021-02-16
資料型別拓展
各個型別所佔位元組大小
參考了這篇文章
-
byte: 1位元組 預設0 範圍: -128 – 127
-
short: 2位元組 預設0 範圍:-32768 – 32767
-
char: 2位元組 預設’\u0000’ 範圍: ‘\u0000’ – ‘\uffff’
-
int: 4位元組 預設0 範圍 -2147483648 – 2147483647
-
float: 4位元組 預設 0.0f
-
long: 8位元組 預設0
-
double 8位元組 預設0.0d
整形
- 十進位制 普通的數字表示的就是十進位制數字
- 二進位制 數字前面加上 0b(零不是字母o) 或者 0B 表示二進位制
- 八進位制 數字前面加上 0 (零不是字母o)表示八進位制
- 十六進位制 數字前面加上 0x(零不是字母o)或者 0X 表示十六進位制
例:
int i1 = 10;
int i2 = 0b10;
int i3 = 0B10;
int i4 = 010;
int i5 = 0x10;
int i6 = 0X10;
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println(i5);
System.out.println(i6);
結果:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-doZDQf3S-1613376851057)(E:\教材\Java學習\images\3.png)]
JDK7新特性,數字之間可以用下劃線分割
int a = 10_0000_0000;
浮點數
- 數字比較最好不要用浮點數進行比較
- 銀行業務等不用浮點數表示,用BigDecimal這個類
例1:
float f = 0.1f;
double d1 = 1.0/10;
double d2 = 0.1;
System.out.println(f==d1);
System.out.println(f==d2);
System.out.println(d1==d2);
結果:
個人猜測是因為float和double這兩個資料型別的儲存方式不同導致本來應該看上去相同的數字但並不相同
例2:
float a = 32423435342957473925743f ;
float b = a+1;
System.out.println(a==b);
結果:
因為a超過了float能夠表示的資料範圍
字元
Java中的字元是Unicode編碼的,其表示範圍由 ‘\u0000’ 到 ‘\uffff’