Java SE 基础知识(一)数据基本类型
基本数据类型
数据类型的声明和取值
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
当声明一个整数时默认为int类型,声明一个浮点数时默认为double类型,浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。其他类型的声明:
- byte: 35B
- float: 35.1F
- long: 35L
- short: 35S
- char: ‘A’
基本数据类型长度及取值范围:
数据类型 | 所占位数 | 取值范围 |
---|---|---|
boolean | 1 | true or false(default:false) |
byte | 8 | -128~127 |
short | 16 | -215 ~ 215-1(32768~32767) |
char | 16 | 0~216-1 |
int | 32 | -231 ~ 231-1 |
long | 64 | -263 ~ 263-1 |
float | 32 | [-3.4e+38 , -1.4e-45] ∪ [1.4e-45 ~ 3.4e+38] 。 |
double | 64 | [-1.79e+308,-4.94e-324] ∪ [4.94e-324,1.79e+308] |
关于数据类型的转换(自动转换、强制转换、数据提升)
自动转换
满足以下条件可以进行自动数据转换
1.数据之间兼容(例如Boolean无法转换成其他数据类型)
2.目标数据类型的取值范围要大于被转换数据类型的取值范围
如上图所示,黑色箭头表示可以向目标数据类型自动转换,而红色箭头表示有数据丢失的强制数据转换
强制类型转换
将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在精度损失的风险,编译器要求程序员进行强制类型转换。
类型强制转换方法:
int a = (int)3.1415926(将会丢失部分精度)
数据提升
所谓类型提升就是指在多种不同数据类型的表达式中,类型会自动向范围表示大的值的数据类型提升。提升规则:
Java定义了若干使用于表达式的类型提升规则:
- 所有的byte型. short型和char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。)
- 如果一个操作数是long形 计算结果就是long型;
- 如果一个操作数是float型,计算结果就是float型;
- 如果一个操作数是double型,计算结果就是double型;
引用数据类型
Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注
引用类型与基本类型的不同点:
- 声明基本类型时,是在栈内存中开辟空间并存放数据,而声明引用类型是在栈空间中声明变量名,而在堆空间中存放数据。
- 根据上一点可推断出,基本数据类型赋值是传递数值,而引用类型赋值是传递数值的地址