Java 数组与类的构造方法实战解析:Point数组的创建与使用
一、原题完整代码呈现
以下是计算机二级Java考试中关于对象数组和类构造方法的典型题型,主要考察对象数组声明、数组长度获取、构造方法定义和成员变量访问,包含4处需要填写的空白(标记为//*********Found**********
):
public class Java_2 {
public static void main(String[ ] args) {
//*********Found**********
__________ pt = new Point[2];
pt[0] = new Point();
pt[1] = new Point(2, 3);
//*********Found**********
for (int i=0; i < pt.__________; i++) {
System.out.print( pt[i] );
}
}
}
class Point {
private int x;
private int y;
public Point() {
this(0, 0);
}
//*********Found**********
public __________ (int a, int b) {
x = a;
y = b;
}
int getX( ) {
return x;
}
int getY( ) {
//*********Found**********
return __________;
}
void setX(int a) {
x = a;
}
void setY(int b) {
y = b;
}
public String toString ( ) {
return " ( " + x + "," + y + " ) ";
}
}
二、空白处逐一解析与解答
1. 第一处空白:声明对象数组
答案:Point[]
//*********Found**********
Point[] pt = new Point[2];
解析:
此处需要声明一个存储Point
对象的数组。Java中对象数组的声明语法为类名[] 数组名
,数组长度为2(可存储2个Point
对象),因此填写Point[]
,表示这是一个Point
类型的数组。
2. 第二处空白:获取数组长度
答案:length
//*********Found**********
for (int i=0; i < pt.length; i++) {
解析: pt
是对象数组,length
是数组的属性,用于获取数组的元素个数(此处为2)。循环需要遍历数组中的所有元素,条件i < pt.length
确保索引不越界,因此填写length
。
3. 第三处空白:定义有参构造方法
答案:Point
//*********Found**********
public Point (int a, int b) {
x = a;
y = b;
}
解析:
构造方法是用于初始化对象的特殊方法,名称必须与类名完全一致。Point
类需要一个接收两个整数参数的构造方法,用于设置x和y坐标,因此方法名为Point
。
4. 第四处空白:返回y坐标
答案:y
//*********Found**********
return y;
解析: getY()
方法是y
成员变量的getter方法,用于返回y
的值。根据封装原则,私有变量y
通过该方法对外提供访问,因此返回y
。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序实现以下功能:
- 定义
Point
类表示坐标点,包含x和y坐标 - 提供无参构造方法(默认初始化(0,0))和有参构造方法(自定义坐标)
- 在主程序中创建
Point
对象数组,存储两个点 - 遍历数组并打印每个点的坐标
运行说明
- 主方法中创建长度为2的
Point
数组pt
初始化数组元素:
pt[0] = new Point()
:调用无参构造,通过this(0,0)
初始化坐标为(0,0)pt[1] = new Point(2,3)
:调用有参构造,初始化坐标为(2,3)
- 循环遍历数组,打印每个点的信息(自动调用
toString()
方法) - 输出结果:
( 0,0 ) ( 2,3 )
五、核心知识点总结
对象数组的创建与使用
- 声明方式:
类名[] 数组名
(如Point[] pt
) - 初始化:
new 类名[长度]
仅创建数组容器,需单独为每个元素创建对象(pt[0] = new Point()
) - 长度获取:
数组名.length
返回数组可存储的元素个数 - 访问方式:通过
数组名[索引]
访问对象,再调用对象的方法或属性
- 声明方式:
构造方法的重载
- 重载概念:同一个类中定义多个参数不同的构造方法(名称相同,参数列表不同)
- 无参构造:
public Point()
,当需要默认初始化时使用 - 有参构造:
public Point(int a, int b)
,允许自定义初始化值 this
调用:this(0,0)
在无参构造中调用有参构造,避免代码重复
封装与getter方法
- 私有变量:
x
和y
用private
修饰,隐藏内部数据 - 访问接口:
getX()
和getY()
作为公共方法,提供对私有变量的访问 - 封装好处:控制数据访问方式,确保数据合法性(如需限制x的范围,可在getter/setter中处理)
- 私有变量:
toString()方法的作用
- 自动调用:打印对象时(如
System.out.print(pt[i])
),Java会自动调用toString()
方法 - 自定义格式:重写
toString()
方法可返回易于理解的字符串(如坐标格式(x,y)
) - 默认实现:若不重写,会使用
Object
类的默认实现(类名@哈希码)
- 自动调用:打印对象时(如
六、常见错误与应试技巧
常见错误分析
- 第一处空白数组声明错误:写成
Point pt[]
(C语言风格,不推荐)或int[] pt
(类型错误) - 第二处空白数组长度错误:写成
pt.length()
(加括号,混淆属性与方法)或2
(硬编码,不灵活) - 第三处空白构造方法名错误:写成
point
(小写p)或Point(int a)
(参数不匹配) - 第四处空白返回值错误:写成
Y
(大写Y,变量名区分大小写)或x
(返回错误的变量)
- 第一处空白数组声明错误:写成
应试技巧
- 对象数组声明:"类名加[],数组存储对象引用"
- 数组长度:"数组长度是属性,length无括号"
- 构造方法重载:"同名不同参,this来调用,初始化更灵活"
- 封装原则:"私有变量要隐藏,get/set来访问"
- toString重写:"打印对象看内容,重写toString方法准"
通过本题,我们掌握了对象数组的创建与遍历、构造方法的重载与调用、封装机制以及toString()
方法的应用。这些是面向对象编程的核心知识点,在实际开发中,对象数组用于管理多个同类对象,构造方法确保对象正确初始化,封装保证数据安全,共同构成了Java面向对象编程的基础。