Java还提供了引用数据类型(Reference Types)。这些类型的变量存储的是对象的引用,而不是直接存储值。引用数据类型主要包括以下几类:
类型 | 描述 |
---|---|
类(Class) | 每个对象都有自己的状态(属性或字段)、行为(方法),并且可以通过构造函数初始化。 |
接口(Interface) | 接口定义了一组抽象的方法签名,但不提供具体实现。任何实现了某个接口的类都必须提供这些方法的具体实现。接口允许不同类之间共享相同的行为规范,从而提高了代码的灵活性和可扩展性。 |
数组(Array) | 数组在声明时需要指定长度,并且一旦确定就不能改变。数组中的元素可以通过索引访问,从0开始计数。 |
枚举(Enum) | 使用枚举可以使代码更具可读性和安全性,因为编译器可以在编译期检查非法值。 |
注释(Annotation) | 注解不会直接影响程序逻辑,而是用来描述或者标记代码,帮助工具处理代码。常见的内置注解包括@Override 、@Deprecated 等。 |
记录(Record) | 记录是不可变的,并且自动提供了合理的equals() 、hashCode() 和toString() 方法实现。 |
密封(Sealed Class) | 密封类允许你限制哪些类可以从一个特定的基类派生出来。这意味着你可以明确指出哪些子类可以继承这个基类,增强了对继承结构的控制力。 |
局部类(Local Class) | 这类类是在方法内部定义的类,它的作用域仅限于定义它的方法体内。局部类通常用于封装一段逻辑,特别是当这段逻辑只在这个方法内有用的时候。 |
匿名类(Anonymous Class) | 匿名类主要用于简化那些只需要一次使用的类的定义。它可以直接在表达式中创建并实例化。 |
总结:
引用数据类型与基本数据类型的一个关键区别在于内存管理方式的不同。基本数据类型直接存储实际值,而引用数据类型则保存指向堆内存中对象的引用地址。此外,所有引用类型的默认值都是`null`,意味着它们没有指向任何有效的对象。