java数据类型
基本数据类型
数值型
- 整数类型
- byte
占用存储空间:1字节,8位;
表示范围:- 27 ~ 27 -1 (-128~127);
表示:byte num = 1
; - short
占用存储空间:2字节,16位;
表示范围:- 215 ~ 215 -1 (-32768-32767);
表示:short num = 1
; - int
占用存储空间:4字节,32位;
表示范围:- 231 ~ 231 -1 (-2147483648~2147483647);
表示:int num = 1
; - long
占用存储空间:8字节,64位;
表示范围:- 263 ~ 263 -1;
表示:long num = 1l
或long num = 1L
;建议使用大写L,小写容易误认为数字1;
- byte
浮点类型
- float
占用存储空间:4字节,32位;
表示范围:-3.403E38~3.403E38;
表示:float num = 1f
或float num = 1F
; - double
占用存储空间:8字节,64位;
表示范围:-1.798E308~1.798E308;
表示:double num = 1.0; 比较
- 默认是double
浮点数存在误差,所以在比较中尽量避免使用浮点数,如
float num1 = 0.1f; double num2 = 1.0/10; System.out.println(num1==num2); 输出的是false而不是true;
如果需要精确保存一个浮点数可使用BigDecimal;
- 三个特殊的浮点数值:
正无穷大,负无穷大和非数;用于表示溢出和出错;正无穷大通过Double和Float类的POSITIVE_INFINITY表示,负无穷大通过Double和Float类的NEGATIVE_INFINITY表示,非数通过Double 和Float类的NaN表示;所有的正无穷大数值都是相等的,所有的负无穷大的数值也是相等的,而NaN不与任何数值相等,甚至与NaN都不相等;
- float
- 整数类型
字符型
- char
占用存储空间:2字节,16位;
表示范围:0~ 216 -1(0~65535);
表示:
char c = 'a';
直接通过单个字符指定;
char c = '\n';
通过转义字符制定;
char c = '\uXXXX'
XXXX代表一个十六进制的整数,通过Unicode表示;
常见转义字符:
转义字符 说明 Unicode表示方法 \b 退格符 \u0008 \n 换行符 \u000a \r 回车符 \u000d \t 制表符 \u0009 \” 双引号 \u0022 \’ 单引号 \u0027 \ \ 反斜线 \u005c - char
布尔型
- boolean
占用存储空间:1位;
表示范围:true,false;
表示:boolean b = true;
- boolean
类型转换
自动类型转换
容量(表示的数据个数)小的数据类型可以自动转换为容量大的数据类型:
int i = 1; double d = i; float f = i; double d2 = f;
特例:可以将整数常量直接赋值给byte,short,char等类型变量,而不需要强制类型转换,只要不超出其表示范围:
short b = 12;// 合法; short b = 1234567;//非法
在下图,黑色箭头表示无数据丢失的自动类型转换,红色表示在转换时可能存在精度的损失:
- 强制类型转换
- 强制类型转换用于显示的转换一个数值的类型,在有可能丢失信息的情况下进行的转换是通过强制类型转换来实现的,但可能造成精度降低或溢出;
- 当一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,就会被截断为完全不同的值;
引用数据类型
- 类
- 接口
- 数组类型
- null