JAVA学习笔记 - JAVA基本数据类型
JAVA基本数据类型
基本数据类型分类
JAVA基本数据类型可分为如下几种
实数:double, float
整数:byte, short, int, long
字符:char
布尔值:boolean
数据类型 | 大小(位) | 范围 | 默认值 |
---|---|---|---|
byte(字节) | 8 | -128 ~ 127 | 0 |
shot(短整型) | 16 | -32768 ~ 32768 | 0 |
int(整型) | 32 | -2147483648 ~ 2147483648 | 0 |
long(长整型) | 64 | -9233372036854477808 ~ 9233372036854477808 | 0 |
float(浮点型) | 32 | -3.40292347E+38 ~ 3.40292347E+38 | 0 |
double(双精度) | 64 | -1.79769313486231570E+308 ~ 1.79769313486231570E+308 | 0 |
char(字符型) | 16 | ‘ \u0000 ~ u\ffff ’ | ‘\u0000 ’ |
boolean(布尔型) | 1 | true/false | false |
关于无符号型
无符号型
类型说明符为unsigned。在编译系统中,系统会区分有符号数和无符号数,区分的根据是如何解释字节中的最高位,如果最高位被解释为数据位,则整型数据则表示为无符号数。
无符号型
与上述三种类型匹配而构成,无符号基本型的类型说明符为unsigned int或unsigned。
(1)无符号短整型 类型说明符为unsigned short
(2)无符号长整型 类型说明符为unsigned long
(3)无符号型字节 类型说明符为unsigned char
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
自动类型转换
自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。如图,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
例如,可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。
int intData = 2147483647;
System.out.println(intData);//2147483647
double doubleData = intData;
System.out.println(doubleData);//2.147483647E9
int intData2 = 2147483647;
System.out.println(intData2);//2147483647
float floatData = intData2;
System.out.println(floatData);//2.14748365E9 精度损失
强制类型转换
强制类型转换,用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过强制类型转换来完成的,但可能造成精度降低或溢出。
语法格式
(type)var
运算符“()”中的type表示将值var想要转换成的目标数据类型。
例:
double doubleData = 3.14;
int intData = (int)doubleData;
char charData = 'a';
int intData2 = charData+1;
System.out.println(intData); //3
System.out.println(intData2);//98
System.out.println((char)intDarta2);//b
当将一种类型强制转换成另一种类型,而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值。
例:
int intData = 300;
byte byteData = (byte)intData;
System.out.println(byteData);//强制转换后值为44
注意,不能在布尔类型和任何数值类型之间做强制类型转换。