1. java两大数据类型
(1)基本数据类型(内置类型或值类型)
(2)引用类型,默认为null
1.1 基本数据类型
1.1.1byte
- 1byte=8bit
- 有正负号 -128~127
- 默认值为0
- 应用:byte类型在大型数组中节约空间,主要代替int类型byte d = 12;
- bit比特,表示一位二进制位
- byte是java语言的基本数据类型 1byte = 8bit
- Byte字节,是计算存储空间大小的单位,简称B;1字节 = 8bit
1.1.2short
- 占16位
- 有正负号
- 默认值位0
1.1.3int
- 32位
- 有正负
- 默认值0
1.1.4long
- 64位
- 默认值0L
1.1.5float
- 32位
- 默认值0.0f
1.1.6double
- 64位
- 默认值0.0d
1.1.7char
- 16位Unicode字符
- 0~65535
- 可以存储任何字符
1.1.8boolean
- 1位
- 默认值为false
1.2数据转化
- 自动类型转换
byte->short ,char->int->long->float->double
低精度可向高精度自动转换,反之不可
int a;
byte b = 1;
a = b;
数据类型转换规则:
- 不能对boolean类型进行类型转换;
- 把高精度类型转换为低精度类型时,必须使用强制类型转换;
- 转换过程中可能导致溢出或损失精度(高精度转低精度);
- 浮点数到整数的转换,弃小数部分,而不是四舍五入;
强制类型转换
强制类型转换只发生在高精度类型转为低精度类型的情况下,必须显式的在变量前声明要转换的数据类型,且会损失数据精度
1.2 引用类型
引用类型包括三部分:对象名,对象的引用,对象
User user = new User();
栈中保存的是:user = 对象的引用,即对象名和对象的内存地址
堆中保存的是:new User();,即对象本身
对象、数组、集合、String都是引用数据类型。
所有引用类型的默认值都是null。
基本数据类型只有一块存储空间(分配在栈stack中);
引用类型有两块存储空间(一块在栈stack中,一块在堆heap中);
对于引用类型的对象,对象名和对象的引用放在栈stak中,对象放在堆heap中;引用 就是指向对象在堆heap中的地址
引用 就是指向对象在堆heap中的地址
java的内存模型中保存数据的有两部分: 堆(heap) 和 栈(stack) 。
1.基本类型的变量放在栈里;
2.引用类型中,对象本身放在堆里,对象的引用放在栈里