2.2.5 浮點數(shù)(雙精度)
- 注意事項
表示方式 | 所占空間 | 精度范圍 |
---|---|---|
double | 8字節(jié) | 精確到15-16位 |
- 案例分析
public class DataTypeTest05 {
public static void main(String[] args) {
//①: 聲明一個double類型的變量
double num = 3.14;
System.out.println("double類型num的值是:"+num);
//②: 通過相除得到一個double類型的值
num = 10/3.0;
System.out.println(num);
}
}
- 結論
小數(shù)的數(shù)據(jù)類型通過double指定闸天,占內(nèi)存8個字節(jié),能夠代表的數(shù)的精度范圍是15到16位适袜;這里注意看上述代碼的第二次賦值哲泊,此時num=10/3.0得到的結果是3.33….35,這里要注意一點剩蟀,Java中通過double存儲的小數(shù)本身是存在問題的。如果對于數(shù)據(jù)的精確到要求較高切威,或者可能做一些貨幣計算育特,那么推薦大家使用BigDecimal。
2.2.6 浮點數(shù)(單精度)
- 注意事項
表示方式 | 所占空間 | 精度范圍 |
---|---|---|
float | 4字節(jié) | 精確到6-7位 |
- 案例分析
public class DataTypeTest06 {
public static void main(String[] args) {
//①: 聲明一個float類型的變量
float num = 3.14;
System.out.println("float類型num的值是:"+num);
}
}
- 結論
這里要千萬注意先朦,默認情況下在Java中所有的小數(shù)的默認類型是double類型且预,所以當給float賦值時,本身賦值的數(shù)是double類型烙无;編譯器覺得賦值的右邊是double類型而左邊是float類型,所以報錯Type mismatch: cannot convert from double to float遍尺。
解決辦法: 在小數(shù)字面值的后面加"F"(推薦)或者是"f"截酷。
public class DataTypeTest06 {
public static void main(String[] args) {
//①: 聲明一個float類型的變量
float num = 3.14F;
System.out.println("float類型num的值是:"+num);
}
}
2.2.7 字符型
- 注意事項
表示方式 | 所占空間 |
---|---|
char | 2字節(jié) |
- 案例分析1
public class DataTypeTest07 {
public static void main(String[] args) {
//聲明一個char類型的變量
char ch = '薛';
System.out.println("char類型的變量ch是:"+ch);
}
}
- 結論1
這里要千萬注意,char類型的變量賦值的時候乾戏,需要通過單引號引起來的單個字符迂苛。注意不能是0個也不能是多個三热,更不能是雙引號。PS:雙引號引起來的是字符串三幻,是一組字符序列就漾。通過String類型去指定。
- 常見報錯信息
編寫方式 | 報錯信息 |
---|---|
char ch = 'ab'念搬; | Invalid character constant 無效的字符常量 |
char ch = ''; | Invalid character constant 無效的字符常量 |
char ch = "a"; | Type mismatch: cannot convert from String to char 類型不匹配抑堡,無法將字符轉為字符 |
- 案例分析2
我們之前帶大家分析過,Java采用的是Unicode字符集合朗徊,所以對于字符類型的數(shù)值而言首妖,除了通過單引號賦值單個字符之外還可以通過轉義字符和Unicode的值來進行賦值操作。
- 通過轉義字符賦值
注意看紅色區(qū)域爷恳,對于某些字符是可以通過
\字符
這樣的方式進行賦值操作的有缆。比如:
什么是轉義字符?
在Java中,通過
\
對于原本的字符的含義讓其發(fā)生改變温亲,我們稱之為轉義字符棚壁。
舉例
public class DataTypeTest06 {
public static void main(String[] args) {
char ch1 = 't';
System.out.println("字符ch1的值是:"+ch1);
char ch2 = '\t';
System.out.println("字符ch2的值是:"+ch2+"。");
}
}
輸出
字符ch1的值是:t
字符ch2的值是: 栈虚。
常見轉義字符以及含義
轉義字符 | 說明 | 代碼示例 | 顯示 |
---|---|---|---|
\b | 退格 | System.out.println("我是\b退格"); | 我是退格,會劃分成兩個詞 |
\n | 換行符 | System.out.println("我是\n換行"); | 我是換行 |
\r | 回車符 | System.out.println("我是\r回車符"); | 我是<br />回車符 |
\t | 制表符 | System.out.println("我是\t回車符"); | 我是 制表符 |
\ " | 雙引號 | System.out.println("我是\ "雙引號"); | 我是"雙引號 |
\ ' | 單引號 | System.out.println("我是\ ''單引號"); | 我是’單引號 |
\ \ | 反斜杠 | System.out.println("我是\ \單引號"); | 我是\單引號 |
- 案例分析3
public class DataTypeTest07 {
public static void main(String[] args) {
//通過Unicode值來給字符類型賦值以\u開頭后跟十六進制數(shù)
char ch = '\u0021';
System.out.println("字符ch2的值是:"+ch+"袖外。");
}
}
- 輸出
字符ch2的值是:!
- 總結
根據(jù)上面ascii表中羅列的十進制的數(shù),可以通過\u
后跟一個16進制
的數(shù)节芥,表示一個字符的數(shù)值在刺。比如!
顯示的十進制的數(shù)是33
,轉為16進制是0021
头镊,所以通過\u0021
顯示的就是蚣驼!
。
案例分析4
根據(jù)上面的ascii表中的內(nèi)容相艇,我們發(fā)現(xiàn)所有的字符其實在計算機中存儲的都是對應的十進制轉換為的二進制的數(shù)據(jù)颖杏,也就意味著字符會對應的2個字節(jié)的正整數(shù)
[0,65535]
;
public class DataTypeTest08 {
public static void main(String[] args) {
//對于字符a進行簡單的+1操作查看結果
char ch = 'a';
System.out.println("字符ch的值是:"+(ch+1));
}
}
- 總結
char類型字符,是可以參與四則運算的坛芽,相當于一個16位的無符號整數(shù)留储,表示數(shù)的范圍是[0,65535]。
2.2.1 邏輯型
- 注意事項
表示方式 | 表示邏輯 | 所占空間 |
---|---|---|
邏輯型(boolean) | true(真)或者 false(假) | 1位 |
- 案例分析
public class DataTypeTest09{
public static void main(String[] args){
//1:聲明一個boolean類型的變量
boolean flag = true;
System.out.println("boolean類型的變量flag的值是:"+flag);
//改變flag的值
flag = false;
System.out.println("boolean類型的變量flag的值是:"+flag);
}
}
- 結論
邏輯型boolean所占空間是1位
咙轩,只存在兩個值获讳,要么為true
,要么為false
活喊。注意在Java中不能使用0
,1
代表丐膝;并且其它的基本數(shù)據(jù)類型是無法轉換成為boolean類型的。
強調(diào)一點,boolean類型的變量實際在內(nèi)存中所占的空間是8位帅矗,一個字節(jié)偎肃。這個是大多數(shù)計算機實際的存儲的方式。