Java 基础进阶:数据类型与面向对象
一、Java 的八大基本数据类型
提示:Java 要确定各个基本类型所占用存储空间的大小,它们的大小并不像其他语言一样是随着机器的硬件架构而变化,Java 的数据类型长度是不可变的,这也是 Java 比其他语言编写的更可移植性的原因。
整数类型
整型用于没有小数部分的数字,允许是负数。
- int:4 字节,取值范围在 (-2^31 到 2^31-1)
- long:8 字节,取值范围在 (-2^63 到 2^63-1)
- short:2 字节,取值范围在 (-2^15 到 2^15-1)
- byte:1 字节,取值范围在 (-2^7 到 2^7-1)
浮点型
浮点型用于表示有小数点的数值,所有的浮点型数值计算都要遵守 (IEEE 754) 规范。三个特殊的浮点值:正无穷大,负无穷大,NaN(不是一个数字)。
- float:1bit(符号位)+ 8bits(指数位)+ 23bits(尾数位),精度为 7~8 位有效数字
- double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位),精度为 16~17 位有效数字
字符类型
char 类型的字面量值要使用单引号括起来。
- char:char 类型的值可以表示为 16 进制值,它的取值范围是 Unicode 编码中规定的,范围是 0~65535。
布尔类型
boolean 类型有两个值分别是 true 和 false,用来判断逻辑条件,整型和布尔类型之间不能相互转换。
- true
- false
二、引用数据类型
String 字符串类型
String 的特性
- String 是被 final 修饰过的,不能被继承。
- String 定义的变量是不可变的,因为 String 的底层是由 char 类型实现的并且是使用 final 进行修饰的,所以字符串的值创建之后就不可以被修改,具有不可变性。
- String 实现了 Serializable 和 Comparable 接口,表示 String 支持序列化和可以比较大小。
理解 String 字符不可变性
- 当字符串重新赋值的时候不会再原先的地址进行复制,而是会开辟一块空间存放值。
- 每当字符串进行拼接的时候也不会在原来的内存地址进行修改,而是重新分配内存地址进行复制。
- 当调用 String 的 replace 方法修改指定的字符或者字符串时,也不会再原来的地址进行存放,而是重新分配内存地址进行赋值。
String 实例化的方式
- 直接字面量化实例化
String str = "hello word"; - 通过创建构造器的方法进行实例化
String str = new String("hello word"); - 两种的区别:通过字面量为字符串赋值的变量会存放在字符串的常量池中,通过 new 创建构造器的方法实例字符串时,字符串的对象会存储在堆中。

