变量就是申请内存来存储值.
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
Java 的两大数据类型:
内置数据类型
引用数据类型
内置(基本)类型是在堆栈处分配空间存“值”。但是引用类型,是在堆里面分配空间存“值”。
内置数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
四个整数型:
byte:8位、有符号,以二进制补码表示的整数;
short:16位、有符号,以二进制补码表示的整数;
int:32位、有符号,以二进制补码表示的整数;
long:64位、有符号,以二进制补码表示的整数;
两个浮点型:
float:32位、单精度、符合IEEE 754标准的浮点数;
double:64位、双精度、符合IEEE 754标准的浮点数。
一个布尔型:
boolean:1位,只作为标志来记录true/false情况;
一个字符型:
char:16位、Unicode字符。
实际上,JAVA中还存在另外一种基本类型void(有些书中这样说),它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。
引用类型
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee 等。变量一旦声明后,类型就不能被改变了。
对象、数组都是引用数据类型。
所有引用类型的默认值都是null。
一个引用变量可以用来引用与任何与之兼容的类型。
Java常量
常量在程序运行时,不会被修改的量。
使用 final 关键字来修饰常量,虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ————————————> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
1. 不能对boolean类型进行类型转换。
2. 不能把对象类型转换成不相关类的对象。
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4. 转换过程中可能导致溢出或损失精度
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型。
强制类型转换
1. 条件是转换的数据类型必须是兼容的。
2. 格式:(type)value type是要强制类型转换后的数据类型
隐含强制类型转换
1. 整数的默认类型是 int。
2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。当是比int类型大的类型做运算,就会自动转换成它们中最大类型那个。