Java类的定义与使用:初始化、构造函数及对象操作
立即解锁
发布时间: 2025-08-18 02:26:18 阅读量: 2 订阅数: 17 

### Java 类的定义与使用:初始化、构造函数及对象操作
在 Java 编程中,类的定义和使用是非常重要的部分。本文将详细介绍 Java 类的数据成员初始化、初始化块、构造函数、对象创建、对象传递以及类的实际应用等方面的内容。
#### 1. 数据成员初始化
在 Java 中,我们可以为类的静态成员和普通非静态成员提供初始值。例如,在 `Sphere` 类中:
```java
class Sphere {
static final double PI = 3.14; // 具有固定值的类变量
static int count = 0; // 用于计数对象的类变量
// 实例变量
double radius = 5.0; // 球体的半径
double xCenter = 10.0; // 3D 坐标
double yCenter = 10.0; // 球心的坐标
double zCenter = 10.0; // 球心的坐标
// 类的其他部分...
}
```
这样,每个 `Sphere` 类型的对象初始时半径为 5.0,球心位于点 (10.0, 10.0, 10.0)。
然而,有些数据成员不能用单个表达式进行初始化。比如,当数据成员是一个需要通过某种计算来初始化的大数组时,就需要使用初始化块。
#### 2. 使用初始化块
初始化块是位于花括号之间的代码块,在类的对象创建之前执行。初始化块分为两种:
- **静态初始化块**:使用 `static` 关键字定义,在类加载时执行一次,只能初始化类的静态数据成员。
- **非静态初始化块**:为每个创建的对象执行,因此可以初始化类的实例变量。
下面是一个使用静态初始化块的示例:
```java
class TryInitialization {
static int[] values = new int[10]; // 静态数组成员
// 初始化块
static {
System.out.println("Running initialization block.");
for(int i = 0 ; i < values.length ; ++i) {
values[i] = (int)(100.0*Math.random());
}
}
// 列出对象数组中的值
void listValues() {
System.out.println(); // 开始新的一行
for(int value : values) {
System.out.print(" " + value); // 显示值
}
System.out.println(); // 开始新的一行
}
public static void main(String[] args) {
TryInitialization example = new TryInitialization();
System.out.println("\nFirst object:");
example.listValues();
example = new TryInitialization();
System.out.println("\nSecond object:");
example.listValues();
}
}
```
当编译并运行这个程序时,两个对象的数组值是相同的,因为 `values` 数组是静态的。静态初始化块在类加载时执行一次,为数组生成伪随机整数值。
如果将 `listValues()` 方法声明为静态方法:
```java
static void listValues() {
System.out.println(); // 开始新的一行
for(int value : values) {
System.out.print(" " + value); // 显示值
}
System.out.println(); // 开始新的一行
}
```
并在 `main()` 方法开头添加以下语句:
```java
System.out.println("\nNo object:");
TryInitialization.listValues();
```
可以通过类名调用该方法,输出数组的值。
如果删除初始化块前的 `static` 修饰符,非静态初始化块将为每个创建的对象执行,两个对象的数组值将不同。
#### 3. 构造函数
在创建类的对象时,会调用一种特殊的方法,即构造函数。如果没有为类定义任何构造函数,编译器会提供一个默认构造函数,它不做任何事情,也不需要指定参数,也被称为无参构造函数。构造函数的主要目的是为正在创建的对象唯一地初始化实例变量。
构造函数有两个特殊特征:
- 构造函数从不返回值,并且不能指定返回类型,甚至不能是 `void` 类型。
- 构造函数的名称总是与类名相同。
以下是在 `Sphere` 类中添加构造函数的示例:
```java
class Sphere {
static final double PI = 3.14; // 具有固定值的类变量
static int count = 0; // 用于计数对象的类变量
// 实例变量
double radius; // 球体的半径
double xCenter; // 3D 坐标
double yCenter; // 球心的坐标
double zCenter; // 球心的坐标
// 类构造函数
Sphere(double theRadius, double x, double y, double z) {
radius = theRadius; // 设置半径
// 设置球心的坐标
xCenter = x;
yCenter = y;
zCenter = z;
++count; // 更新对象计数
}
```
0
0
复制全文
相关推荐










