Java資料型別及型別轉換
阿新 • 來源:網路 • 發佈:2021-01-25
Java資料型別及型別轉換
Java是一種強型別語言:要求變數的使用嚴格符合規定,所有變數都必須定義後才能使用
好處:安全性高
弊端:速度會下降
一、Java的資料型別分為兩大類(Demo01)
-
八大基本型別(primitive type)
-
數值型別
(1)整數型別
①byte 佔1個位元組(範圍:-128—127)
②short 佔2個位元組(範圍:-32768—32767)
③int 佔4個位元組(範圍:-2147483648—2147483647)
④long 佔8個位元組,long型別定義的時候要在數字後面加個L(範圍:-9223372036854775808—9223372036854775807)
(2)浮點型別
①float 佔4個位元組,float型別定義的時候要在數字後面加個F
②double 佔8個位元組
(3)字元型別:char 佔2個位元組(簡單理解就是隻能一個字)
-
boolean型別:佔1位其值只有true和false兩個
-
-
引用型別(reference type)
- 類
- 介面
- 陣列
補充
-
位(bit):是計算機內部資料儲存的最小單位,11001100就是一個八位的二進位制數。
-
位元組(byte):是計算機中資料處理的基本單位,習慣上用大寫的B來表示。
-
1B(byte 位元組)=8bit(位)
-
字元:是指計算機中使用的字母、數字、字和符號
-
最好完全避免使用浮點數來做比較(浮點數是有限的,也是離散的,存在舍入誤差,不能精確表示)
-
所有字元的本質還是數字
public class Demo01 {
public static void main(String[] args) {
float f = 0.1f; //0.1 f:0.1
double d = 1.0/10; //0.1 d:0.1
System.out.println(f==d); //false
//======================================================
float d1 = 23131312313132113f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true
//浮點數是有限的,也是離散的,存在舍入誤差,不能精確表示
//======================================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);//a
System.out.println((int)c1);//97 強制轉換
System.out.println(c2);//中
System.out.println((int)c2);//20013 強制轉換
}
}
二、型別轉換(Demo02)
由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換
- 強制轉換 格式:(型別)變數名 【從高到低】
- 自動轉換 【從低到高】
低 --------------------------------------------------------->高
byte,short,char—>int—>long—>float—>double
注意:
- 不能對布林值進行轉換
- 不能把物件型別轉換為不相干的型別
- 在把高容量轉換到低容量的時候,強制轉換
- 轉換的時候可能存在記憶體溢位,或者精度問題(特別是操作比較大的數的時候,要多注意溢位問題)
- 運算中,不同型別的資料先轉化為同一型別,再進行運算
public class Demo02 {
public static void main(String[] args) {
int money = 1000000000;
int years = 20;
int total = money*years;
long total2 = money*years;
long total3 = money*(long)years;
System.out.println(total);
//-1474836480(計算的時候溢位了)
System.out.println(total2);
//-1474836480(預設是int型別,先計算出來的結果就已經是int的-1474836480了,然後才賦值給long型別的total2)
System.out.println(total3);
//20000000000
}
}
