[toc]
## 基本變量類型
數據類型如下圖所示

java有八種基本類型,都是java語言預定好的,并且都是關鍵字。
這8中基本類型分別是:
整型(4種):byte(8位)、short(16位)、int(32位)、long(64位)
字符型(1種):char(16位)
浮點型(2種):float(32位)、double(64位)
布爾型(1種):boolean
<br>
### 字符型
char類型用于存放一個字符,值用單引號'表示 (雙引號表示字符串)
其長度和short一樣,也是16位的
只能存放一個字符,超過一個字符就會產生編譯錯誤
~~~
public class HelloWorld{
public static void main(String[] args){
char c = '中';
//char 只能存放一個字符,超過一個字符就會產生編譯錯誤
char c2 = '中國'; //報錯
char c3 = 'ab'; //報錯
}
}
~~~
### 浮點型
浮點數類型有兩種
float 長度為32位
double 長度為64位
注意: 默認的小數值是double類型的
~~~
public class HelloWorld{
public static void main(String[] args){
double d = 123.45;
float f = 54.321;
//該行會出現編譯錯誤,因為54.321是double型的
float f2 = 54.321f;
//該行正確
}
}
~~~
### 布爾型
布爾型用于表示真假
雖然布爾型真正存放的數據是0(false) 1(true)
但是,不能直接使用0 1 進行賦值
~~~
public class HelloWorld {
public static void main(String[] args) {
boolean b1 = true;
boolean b2 = false;
// 雖然布爾型真正存放的數據是0(false) 1(true)
// 但是,不能直接使用0 1 進行賦值
boolean b3 = 1;
//錯誤!
}
}
~~~
## 轉換規則
精度高的數據類型就像容量大的杯子,可以放更大的數據
精度低的數據類型就像容量小的杯子,只能放更小的數據
小杯子往大杯子里倒東西,大杯子怎么都放得下
大杯子往小杯子里倒東西,有的時候放的下,有的時候就會有溢出
<br>
### 低精度向高精度轉換
~~~
public class HelloWorld {
public static void main(String[] args) {
long l = 50;
int i = 50;
//int比較小,要放進比較大的long,隨便怎么樣,都放的進去
l = i;
}
}
~~~

<br>
### 高精度向低精度轉換
~~~
public class HelloWorld {
public static void main(String[] args) {
byte b = 5;
int i1 = 10;
int i2 = 300;
b = (byte) i1;
//因為i1的值是在byte范圍之內,所以即便進行強制轉換
//最后得到的值,也是10
System.out.println(b);
//因為i2的值是在byte范圍之外,所以就會按照byte的長度進行截取
//i2的值是300,其對應的二進制數是 100101100
//按照byte的長度8位進行截取后,其值為 00101100 即44
b =(byte) i2;
System.out.println(b);
//查看一個整數對應的二進制的方法:
System.out.println(Integer.toBinaryString(i2));
}
}
~~~

<br>
總結下來就是:低精度向高精度轉換隨便轉都沒事;高精度轉換低精度有時候可以轉有時候不能轉,但使用強制類型轉換就可以轉但是不能保證轉換后結果的正確性,如果有溢出,溢出的部分都會丟失。