在Java语言中数据类型主要分为两大类:
(1)基本数据类型(记住)
byte、short、int、long、float、double、boolean、char
(2)引用数据类型(了解)
数组、类、接口、枚举、标注
一、Java语言中描述整数数据的类型有:byte、short、int、long,推荐int类型
其中byte类型在内存空间中占用1个字节,表示范围是:-2^7 ~2^7-1;
其中short类型在内存空间中占2个字节,表示范围是:-2^15 ~2^15-1;
其中int类型在内存空间中占4个字节,表示范围是:-2^31 ~2^31-1;
其中long类型在内存空间中占8个字节,表示范围是: -2^63 ~2^63-1;
默认为int类型,所以超过数据类型自身就已经出错了;
byte a = 127;
short b = 250250;
int c = 45432132123132131313;
在数据末尾加上L更改默认类型:在Java程序中直接写出的整数数据叫做直接量/字面量/常量,默认为int类型。若希望表达更大的直接量,则在直接量后面加上l或者L,推荐L.
int d = 250250250250L;
若描述比long类型还大的数据则使用java.math.BigInteger类型
问题1:为什么变量赋值会报错?
int a = 25;
byte d = a;
二、Java描述浮点的数据类型有:float和double,推荐double类型
其中float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38(E38表示10^38)。
其中double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-1.798E308~1.798E308。
Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F。
float类型可以表示7位有效数据,这些小数数据叫做浮点直接量
float如果超过7位有效数据,也会返回整数类型类似的错误
float f1 = 3.1415926;
避免这类错误的方法就是在数据末尾标注该数据是什么类型?比如:
float f1 = 3.1415926f;
因为float最多可以表示7位浮点数,所以第8位浮点数不准确,这时候就应该使用更大的双精度浮点数double类型
double f1 = 3.1415926;
因为float类型和double类型存在误差,所以商业开发(涉及金钱的时候)的时候不使用float类型和double类型,若希望实现精确运算则借助java.math.BigDecimal类型
以下例子可以看出float、double存在误差:
float f1 = 3.1415926f;
double f2 = 3.1415926;
System.out.println(f1+f2);
三、Java描述布尔的数据类型有:boolean
Java语言中用于描述真假信息类型有:boolean,数值只有:true 和 false。
布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。
声明布尔类型:
boolean b1 = true;
boolean b2 = false;
整数直接量不能转换成boolean类型:
boolean b2 = false;
b2 = 2;