基本数据类型
数值型
整数型
byte 字节 1byte -2^7到2^7-1
short 短整型 2byte -2^15到2^15-1
int 整型 4byte -2^31到2^31-1
long 长整型 8byte -2^63到2^63-1
整数型总结:
1.根据需要存储的数据大致范围,选择合适的数据类型
例如
byte num = 128; //byte所能存储的有符号数据范围为-128到127,128超出范围,所以程序编译
出错
避免使用的数据类型不合适而浪费内存空间,但是在实际开发中,一般只使用int和long,而不用byte和short
2.整数型固定值常量默认值为int
何为整数型固定值常量?
-3、-2、-1、0、1、2、3...1000...无穷大,这些全都是整数型固定值常量,也就是所有自然整数全
都是整数型固定值常量,以及所有的八进制,十六进制数。他们的默认类型为int
举个例子:
long num = 3000000000;//编译出错,为什么?因为赋值号右边的数字是整数型固定值常量,
它的默认数据类型为int,int的范围大概是-21亿到21亿,它是30亿,超出了int的范围,所以编译出错
如何改正?请看下面
3.在整数型固定值常量末尾加"L"或"l",它就变成了long型常量
于是可知,上面的代码应改为
long num = 3000000000L;//强烈建议使用大写L,小写l容易与数字1混淆
浮点型
float 单精度 4byte
double 双精度 8byte
浮点型总结:
1.浮点型数据常量的默认数据类型为double,double的精度是float的两倍
例如
float num = 3.14; //此时编译出错,因为3.14的默认类型为double
所有十进制小数常量,如3.1415,8.5,-0.3.....
所有科学计数法表示的小数常量,如3.14E2,3.14E-3
3.14E2等效于314.0,小数点往右移两位
3.14E-3等效于0.00314,小数点往左移三位
2.单精度浮点数的末尾要加"F"或"f",float能精确到小数点后7位
float num = 3.14f //此时编译正确
3.浮点数的表示范围非常大
细心的小伙伴可能早就发现了,上面的整数型,我都写的有范围,而浮点型却没有,为什么?
因为浮点型数据在计算机内的存储方式与整型不同,它表示的范围非常大,例如float,它虽然只占4byte
但是它表示的范围比long的范围还要大许多。关于浮点型数据的范围和存储方式,感兴趣的朋友可以自行百度
4.因为小数的存储方式不一样,那么最好不要对小数最非常精确的比较
如上,不要试着对浮点型进行数据比较,例如:
double num1 = 0.1;
double num2 = 1/10;
if(num1 == num2){
System.out.println("yes");
}else{
System.out.println("no");
}//输出结果为 no
字符型
char 字符型 2byte
字符型总结:
1.字符型是用单引号包括起来的一个字符,例如'a',它不可为空
2.字符型经过编码,在计算机内部存储的是正整数,例如‘a’对应的是97
3.转义字符也属于字符型,例如 '\t', 制表符,类似于按下tab键 '\n', 换行符,类似于按下enter键
4.Unicode编码表中,char占2字节,可允许有65536个字符,一个中文字符占2字节
布尔型
boolean 布尔型 布尔型所占内存不确定,这个问题很有意思,此处不作详解。
布尔型总结:
布尔型算是基本数据类型中最简单的一个了
布尔型常量值:true,false
true: 代表真或条件成立
false: 代表假或条件不成立
布尔类型的使用场合:
常用于条件判断,例如:条件成立该做什么事,条件不成立又该做什么事。