Java变量有两种类型:primitive主数据类型和引用类型
primitive主数据类型:用来保存基本类型的值,包括整数,布尔和浮点数等
类型 | 位数 | 值域 |
boolean | JVM决定 | true/false |
char | 16bits | 0~65535 |
byte | 8bits | -128~127 |
short | 16bits | -32768~32767 |
int | 32bits | -2147483648~2147483647 |
long | 64bits | -很大~+很大 |
float | 32bits | 范围规模可变 |
double | 64bits | 范围规模可变 |
注意
1、float f = 32.5f; 如果“32.5f”没有加上“f”,Java会将所有带小数点的值当作double处理;
2、值域范围大的数据类型 数据 不能存放在 值域类型小的数据类型,可以通过强制类型转换损失精度存储;
如:int x = 32.5;编译不通过, int x = (int)32.5;编译通过,但是会损失精度
int x = (int)3222222222222222222222222222.3;编译通过,但是超出int的值域范围,最终x结果为int的最大值。
对象引用变量:保存的是对象的引用
没有对象变量这样的说法,只有引用(reference)到对象的变量;
对象引用保存的是存取对象的方法,它并不是对象的容器,而是类似指向对象的指针。或者可以说是地址。但在Java中我们不会也不该知道引用变量中实际装载的是什么,它只是用来代表单一的对象。只有JVM才会知道如何使用引用来取得该对象。
举例:Dog d = new Dog();
d :Dog类型的对象引用,JVM会为 对象引用变量d 分配空间;
new Dog():Dog对象,JVM会为 Dog对象new Dog() 分配堆空间;