数据类型
- 基本数据类型
- 引用数据类型
基本数据类型(值类型/原始类型)
- 低精度的可以向高精度转换,高精度不能向低精度转换,因为会丢失内容。
整型数据
-
byte -> short -> int -> long
-
byte
- 内存存储占一个字节,8位
- 存储数据范围:-128 ~ 127
-
short
- 内存存储占2个字节,16位
- 存储数据范围:-32768 ~ 32767
-
int
- 内存存储占4个字节,32位
- 存储数据范围:-2147483648 ~ 2147483647
-
long
- 内存存储占8个字节,64位
- 存储数据范围: ~
-
调用long.toBinaryString()可以知道数在内存中的二进制形式
public static main(string[]){ //出错,3025164895会被看成是int型,超出了int范围 long lon = 3025164895; //处理办法,在后面加L,表示这串数是long类型 long lon = 3025164895L; }
浮点型数据
-
float
- 内存存储占4个字节,32位
- 存储数据范围:
- java中任何带小数点的常量将被视为double型
public static void main(String[] args) { //175.5会被视为一个double型 float fl = 175.5; //正确写法 float f1 = 175.5F; }
-
double
-
实际应用中应使用double存储小数
-
内存存储占8个字节,64位
-
存储数据范围:
-
科学计数法
2E5
表示2
乘以10
的5
次方,E可以小写- 科学计数法只能用来表示浮点型
字符型
- jvm对字符采用Unicode无符号进行编码
- 内存存储占2个字节,16位
- char可存储数字0~65535范围内的非负数
- 字符常量:
'A' '9' '\n' '\\'
- 注意
\
是转义字符,\n
不再是n,而是键盘上的换行符,要想打印转义字符,就得将转义字符给转义了:\\
- char和int是兼容的,也就说可以相互转换。
- char接受int型常量赋值不能超过最大的范围。
- 将int型变量赋值给char型是错误的,因为变量运行时才能知道值是多少,必须使用强制类型转换
布尔类型(boolean)
- 有true、false两种值
- 标准jvm规范定义,在java语言中在计算机底层使用int类型存储boolean类型数据,所以Boolean类型占用4个字节存储空间
- 由于jvm实现的不同,处理Boolean类型底层存储也会不同
引用数据类型
- 数组
- String
- 自定义类型
数据类型转换
-
自然转换(自动):由低精度向高精度数据类型转换
byte -> short -> int ->long -> float -> double
-
强制转换:由高精度向低精度数据类型转换