四种八类数据类型;
Java语言提供了八种基本类型。六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。
byte:
●byte数据类型是8位、有符号的,以二进制补码表示的整数;(256个数字),占1字节
●最小值是-128(-2^7);
●最大值是127(2^7-1);
●默认值是0;
●byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
例子:byte a = 100,byte b = -50。
short:
short数据类型是16位、有符号的以二进制补码表示的整数,占2字节
●最小值是-32768(-2^15);
●最大值是32767(2^15 - 1);
●Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
●默认值是0;
例子:short s = 1000,short r = -20000。
int:
int数据类型是32位、有符号的以二进制补码表示的整数;占3字节
●最小值是-2,147,483,648(-2^31);
●最大值是2,147,485,647(2^31 - 1);
●一般地整型变量默认为int类型;
●默认值是0;
例子:int a = 100000, int b = -200000。
long:
long数据类型是64位、有符号的以二进制补码表示的整数;占4字节
●最小值是-9,223,372,036,854,775,808(-2^63);
●最大值是9,223,372,036,854,775,807(2^63 -1);
●这种类型主要使用在需要比较大整数的系统上;
●默认值是0L;
例子: long a = 100000L,int b = -200000L。
long a=111111111111111111111111(错误,整数型变量默认是int型)
long a=111111111111111111111111L(正确,强制转换)
float:
float数据类型是单精度、32位、符合IEEE 754标准的浮点数;占4字节 -3.4E38- 3.4E38。
●浮点数是有舍入误差的
●float在储存大型浮点数组的时候可节省内存空间;
●默认值是0.0f;
●浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。
float f=6.26(错误 浮点数默认类型是double类型)
float f=6.26F(转换正确,强制)
double d=4.55(正确)
double:
double数据类型是双精度、64位、符合IEEE 754标准的浮点数;
●浮点数的默认类型为double类型;
●double类型同样不能表示精确的值,如货币;
●默认值是0.0d;
例子:double d1 = 123.4。
boolean:
boolean数据类型表示一位的信息;
●只有两个取值:true和false;
●这种类型只作为一种标志来记录true/false情况;
●默认值是false;
例子:boolean one = true。
char:
char类型是一个单一的16位Unicode字符;用 ‘’表示一个字符。。java 内部使用Unicode字符集。
●他有一些转义字符 ,2字节
●最小值是’\u0000’(即为0);
●最大值是’\uffff’(即为65,535);可以当整数来用,它的每一个字符都对应一个数字
char数据类型可以储存任何字符;
例子:char letter = ‘A’。
注意:
1. 基本类型数据本身的值直接存储在内存栈空间里,更加高效。
2. 每种基本类型所占的存储空间大小固定,便于移植。
3. 所有数值类型都有正负号。
4. boolean类型所占存储空间的大小没有明确指定,仅定义为能够取字面值true或false。
5. 从JDK5.0开始,Java基本数据类型及其对应包装类之间能实现自动装箱解箱操作。
6. 带有“F/f”后缀的数都是float类型的;带有“D/d”后缀的数都是double类型的。
7. 未带有字符后缀标识的整数默认为int类型;未带有字符后缀标识的浮点数默认为double类型。
8. 如果一个整数的值超出了int类型能够表示的范围,则必须增加后缀“L/l”表示为long型。
9. 编译期检查:编译器会在编译期对byte、short、int、long、float、double、char型变量的值进行检查,如果
超出了它们的取值范围就会报错。
10.自动类型转换和强制类型转换:
A. 当一个较小类型的数据和较大类型的数据一起运算的时候,系统会将较小的数据类型自动转换为较大的数据类型进行运算;在方法调用时,如果实际参数类型较小,而函数的形参类型较大时,除非有匹配的方法,否则会将参数自动转换为较大类型的形式参数进行调用。
B. 如果我们想把一个能表示更大范围或者更高精度的类型,转换为一个范围更小或者精度更低的类型时,就需要使用强制类型转换(Cast)了,强制类型转换可能导致精度损失。
C. 自动类型转换图示:byte -> short(char) -> int -> long -> float -> double;反之为强制类型转换。