Java入門系列-05-數據類型和類型轉換
- java 中有哪些數據類型可以用存儲數據?
- java 中的數據類型是怎麽轉換的?
在上一篇文章中我們學會了如何使用變量,像這樣存儲一個整數 int age=10;
,可以在開發工具中編寫一行這樣的代碼 int age=10.5;
就會發現開發工具報錯了,是因為變量中的數據類型也是不能隨便用的。
數據類型
咱們先來看下面一組數據
如果每天花費2小時在交通上
1月=60小時=2.5天,
1年=730小時=30天,
50年=36500小時=1520天=4年
這段數據中可以分為以下2類,java中也包含這2大類
- 數值
1月
中的1
60小時
中的60
2.5
天中2.5
- 非數值
,
年
月
小時
- 數值
- 整型
- byte
- short
- int
- long
- 浮點型
- float
- double
- 非數值
- char
- boolean
- String
數值型
下面看一下每個數據類型的詳細介紹
數據類型 | 大小 | 取值範圍 | 介紹 |
---|---|---|---|
byte | 1字節8位 | -128 ~ +127 | 字節型 這個範圍可以存儲普通人的年齡 |
short | 2字節16位 | -32768~+3276 | 短整型 |
int | 4字節32位 | -2147483648)~+2147483647 | 整型 存下中國人口的數量沒有問題,但是存下地球所有人的數量就不夠了 |
long | 8字節64位 | -2^63 ~ + 2^63-1 | 長整型 存下地球的人數綽綽有余 |
float | 4字節32位 | 單精度浮點數 存儲小數 | |
double | 8字節64位 | 雙精度浮點數 |
敲一敲:
public class DemoType { public static void main(String[] args) { //int類型使用 int numa=10+1; System.out.println(numa);//輸出11 short numb=20; //使用long類型時的值需要使用L作為後綴 long time=9223372036854775807L; } }
在使用 long 類型時使用不區分大小寫的 L 作為後綴標記與整型進行區分
使用其他整數時不需加後綴符號,註意賦值的整數不超過類型範圍即可
敲一敲:
public class DemoFloat {
public static void main(String[] args) {
float money=33.6f;
double length=55.07;
}
}
在使用單精度浮點數時需加上
f
作為後綴,這是因為任何小數都會被認為是double
在日常使用中建議使用double
類型防止精度的丟失
非數值型
字符型 char
只能存儲一個字符,值需要用一對單引號引起來,且單引號中只能放一個字符
敲一敲:
char sex=‘男‘;
字符串型 String
用於存儲一串字符,必須用一對雙引號引起來,另外需要註意的是 String 不是基本數據類型,而是 java 中的另一個概念 類
。
敲一敲:
String username="極客大全";
String question="What‘s your name?\nHow old are you?";
String
類型用於存儲字符串,字符串可以拼接但不能用於數學運算- 還可以使用一些
轉義字符
,這些字符可以用來表示一些特殊符號像 空格、換行\n
可以用來表示換行,之後的內容會另起一行\t
可以表示一個制表符(Tab
鍵)
布爾型 boolean
用於存儲邏輯的結果,如:大象比人大的結果是真(true
) 人比螞蟻小的結果是假(false
)
敲一敲:
boolean isbig=(1>10);
System.out.println("isbig:"+isbig);
boolean isequal=(100==3);
System.out.println("isequal:"+isbig);
boolean flag=false;
System.out.println("flag:"+flag);
boolean
類型的變量只能存儲兩個值true
或false
還可以將邏輯比較後的結果(也是true
或false
)存入
數據類型轉換
隱式類型轉換
二花一個月前稱的體重為97.5斤,現在比一個月前剛好增加2斤,二花現在是多少斤?這是一個比較簡單的數學問題,正確結果是 99.5 斤,下面我們用代碼來模擬一遍。
敲一敲:
public class DemoClac {
public static void main(String[] args) {
double weight=97.5;//一個月前的體重
int add=2;//增加的體重
double sum=weight+add;
System.out.println(sum);//輸出和
}
}
add 變量是一個整數類型,而 weight 是一個小數,兩者在相加後轉成了 double類型
這時發生的就是隱式類型轉換
隱式類型轉換
就是自動類型轉換,滿足以下兩個規則即可發生
- 如果一個操作數為double類型,則整個表達式可提升為double類型
像上面的這個示例就是滿足這個規則
- 滿足自動類型轉換的條件:兩種類型要兼容、目標類型大於源類型
例子1 :double a=1;
1屬於整型,double 類型大於整型,即自動轉換
例子2 :
char chr=97;
System.out.println(chr);//輸出字符 a
char 類型兼容 int 類型,每個整數存入char類型變量時都會映射一個字符,更多可以百度 ASCII
強制類型轉換
敲一敲:
int sum=55.3+22;
System.out.println(sum);
我們想要一個整數的和,但上面的這段代碼運行時會報錯:cannot convert from double to int
這是為什麽呢?根據前面學到的隱式類型轉換,當表達式中有操作數為 double類型時,整個表達式提升為 double,必須進行顯式強制類型轉換。
敲一敲:
int sum=(int) (55.3+22);
System.out.println(sum);
這次的運行成功,運行的結果為 77
強制類型轉換往往是從寬度大的類型轉換為寬度小的類型,會使數值損失精度
試一試
- 下面運算的結果是多少?為什麽?
int a=5;
int b=2;
int c=a/5;
System.out.println(c);
- 上一個練習中的代碼如何讓運算結果更精準?
- 下面素材中生成隨機小數,修改素材生成 1-10 的隨機整數
public class DemoRandom { public static void main(String[] args) { double random=Math.random(); System.out.println(random); } }
搜索關註公眾號「享智同行」,第一時間獲取技術幹貨
Java入門系列-05-數據類型和類型轉換