数据类型的声明和取值

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
当声明一个整数时默认为int类型,声明一个浮点数时默认为double类型,浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。其他类型的声明:

  1. byte: 35B
  2. float: 35.1F
  3. long: 35L
  4. short: 35S
  5. char: ‘A’

基本数据类型长度及取值范围:

数据类型 所占位数 取值范围
boolean 1 true or false(default:false)
byte 8 -128~127
short 16 -2 ~ 2-1(32768~32767)
char 16 0~2-1
int 32 -2 ~ 2-1
long 64 -2 ~ 2-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.目标数据类型的取值范围要大于被转换数据类型的取值范围
基本数据类型 - 图1
如上图所示,黑色箭头表示可以向目标数据类型自动转换,而红色箭头表示有数据丢失的强制数据转换

强制类型转换

将容纳更多信息的数据类型转换成一个容量更小的数据类型,可能存在精度损失的风险,编译器要求程序员进行强制类型转换。
类型强制转换方法:
int a = (int)3.1415926(将会丢失部分精度)

数据提升

所谓类型提升就是指在多种不同数据类型的表达式中,类型会自动向范围表示大的值的数据类型提升。提升规则:
Java定义了若干使用于表达式的类型提升规则:

  1. 所有的byte型. short型和char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。)
  2. 如果一个操作数是long形 计算结果就是long型;
  3. 如果一个操作数是float型,计算结果就是float型;
  4. 如果一个操作数是double型,计算结果就是double型;

    引用数据类型

    Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注
    引用类型与基本类型的不同点:

  5. 声明基本类型时,是在栈内存中开辟空间并存放数据,而声明引用类型是在栈空间中声明变量名,而在堆空间中存放数据。

  6. 根据上一点可推断出,基本数据类型赋值是传递数值,而引用类型赋值是传递数值的地址