Java 数据类型
声明一个变量是什么类型,包含了基础数据类型和复杂数据类型,当处于一个纯净java项目中, 基础数据类型不需要我们定义,可以直接为变量声明,而复杂数据类型需要我们定义后才可以为变量声明
String属于复杂数据类型,类型是java.lang包中的,不算纯净java(不使用任何包)
IMPORTANT1byte=8bit
基础数据类型
| 数据类型 | 关键字 | 占用字节 | 取值范围 | 默认值 | 核心说明 |
|---|---|---|---|---|---|
| 字节型 | byte | 1 Byte | -128 ~ 127 | 0 | 最小整数类型,节省内存 |
| 短整型 | short | 2 Byte | -32768 ~ 32767 | 0 | 较少使用,适合小范围整数存储 |
| 整型 | int | 4 Byte | -2¹⁴⁷⁴⁸³⁶⁴⁸ ~ 2¹⁴⁷⁴⁸³⁶⁴⁷-1 | 0 | Java默认整数类型 |
| 长整型 | long | 8 Byte | -9²²³³⁷²⁰³⁶⁸⁵⁴⁷⁷⁵⁸⁰⁸ ~ 9²²³³⁷²⁰³⁶⁸⁵⁴⁷⁷⁵⁸⁰⁷-1 | 0L | 存储超大整数,赋值时必须加 L/l 后缀 |
| 单精度浮点型 | float | 4 Byte | ±3.402823e+38 ~ ±1.401298e-45 | 0.0F | 单精度浮点,精度较低,赋值时必须加 F/f 后缀 |
| 双精度浮点型 | double | 8 Byte | ±1.797693e+308 ~ ±4.9000000e-324 | 0.0 | Java默认浮点类型,精度高 |
| 字符型 | char | 2 Byte | \u0000(0) ~ \uffff(65535) | ‘\u0000’ | 存储单个字符,本质是无符号16位Unicode编码 |
| 布尔型 | boolean | 1 Byte | true / false | false | 只有两个值,用于逻辑判断(true真/false假) |
TIP其中的int,double,boolean是最常用的基础数据类型,int是默认整数类型,double是默认浮点数类型,boolean做逻辑判断
byte是常用于文件流/网络传输
其实无论是float或者double对于浮点数计算仍会有精度丢失,所以我们对于这个问题,常用Decimal类型解决,当然这个类型也不属于基础数据类型了
复杂数据类型
我们常见的String类型就是其中最常用的类型,也就是字符串。复杂数据类型都是通过基础数据类型封装得到的
例如:
public class 果篮{ int 水果;}此时果篮就是一个负责数据类型,就可以在其他文件中应用该类型声明变量。
装箱/拆箱
包装器
int是基本数据类型,那么Integer就是它的包装器。基本数据类型为变量声明后就会为它分配空间,无需实例化;
而包装器是引用类型,声明变量,只是分配了引用空间,需要实例化才能赋值
除了Integer,还提供了其他基本类型的包装器
装箱
自动将基本数据类型转换为包装器类型int -> Integer, 使用Integer.valueOf()方法,可以接受String类型,可以说十分方便了。
获取Integer对象可以:
Integer i = new Integer(10);
Integer i = 10;
Integer i = Integer.valueOf(10);当获取到Integer对象后,就可以利用这个类型中提供的方法进行下一步操作。
CAUTION
Integer对象如果取值在[-127,128]之间,会返回存在对象,如果不在就会创建新对象
拆箱
自动将包装器类型转换为基本数据类型(Integer -> int),使用Integer.intValue()
重写/重载
重写
当子类继承父类时,会继承父类原有的方法,但不想原封不动的继承,那么在方法名,返回类型,方法参数列表都相同的情况下,写自己和父类不一样的实现方法就是重写
发生在子父类之间
IMPORTANT重写的方法访问权限不能低于被重写的方法访问权限
private < default < protected < public
重载
在一个类中,同名方法如果有不同的参数列表(参数个数,参数顺序,参数类型不同),那么这就是重载
重载对返回类型没有要求,可以相同,也可以不同,因此不能通过返回类型判断是否为重载
体现了类的多态性的一种表现
部分信息可能已经过时










川公网安备51011402000992号