Java是强类型语言,任何一个变量或常量在Java中必须有确定的数据类型,
Java的数据类型有两种,即基本数据类型和引用类型
这里主要介绍基本数据类型,以及使用中常见的类型转换的问题
基本数据类型
每种类型的范围,默认值
类型 | 长度(位) | 长度(字节) | 默认值 | 表示范围 |
---|---|---|---|---|
byte | 8 | 1 | 0 | -128~127(-27~27-1) |
short | 16 | 2 | 0 | -32768~32767(-215~215-1) |
int | 32 | 4 | 0 | -2147483648~2147483647(-231~231-1) |
long | 64 | 8 | 0 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807(-263~263-1) |
float | 32 | 4 | 0.0 | 大约±3.402 823 47E+38F(6~7位有效数字) |
double | 64 | 8 | 0.0 | 大约±1.797 693 134 862 315 70E+308(15位有效数字) |
boolean | 8 | 1 | false | 表示一个字符,如(‘a’, ‘A’, ‘0’, ‘中’) |
char | 16 | 2 | 空字符(\u0000) | 只有两个值true与false |
常见问题
基本数据类型之间的转换
- 隐式转换(自动类型转换)
由低到高级分別为:(byte,short,char)int long float double
低级变量能够自动转换为高级变量
int a=1;
byte b=2;
a=b; //能够自动将低级变量byte转换为高级变量
System.out.println(b);//输出结果为1
注意:
boolean
只有tru和false值,不能进行类型转换
char
类型向高级类型(整型) 转换时,会转换为对应ASCII码值
byte、short、char
3种类型,它们是平级的,因此不能进行自动类型转换,而需要通过强制类型转换
- 显示转换(强制类型转换)
在需要进行强制转换高级字段上加上(对应的转换类型)进行强制类型转换
byte c=124;
int d=1;
c=(byte)d;
System.out.println(c);//输出结果1
注意:
需要强制转换的高级类型数值,要在低级类型的范围内
int
转换为byte
时,如果数值超过byte的范围,如下所示int
为156,超过byte的127,则从byte的-128开始往前数,得到结果,反之输入的数为负数,且超过范围从正数开始往回数。
byte n=124; //-128~127
int m=156; //超过byte的范围
n=(byte) m;
System.out.println(n); //输出-100
//byte、short、char,这三类平级,这三类转换时,需要强制类型转换
short i=100;
char c=(char)i;
System.out.printIn("output:"+c) ; //输出结果为d