这是翁恺老师课程3.2.2对象数组中的示例代码:
class Value{
private int i;
public void set(int i){this.i=i;}
public int get(){return i;}
}
public class NoteBook {
public static void main(String[] args) {
Value[] a = new Value[10];
for (int i = 0; i < a.length; i++) {
a[i] = new Value();
a[i].set(i);
}
for (Value v : a) {
System.out.println(v.get());
v.set(0);
}
for (Value v : a) {
System.out.println(v.get());
}
}
}
Value 类的定义
class Value {
private int i;
public void set(int i) { this.i = i; }
public int get() { return i; }
}
class Value {
:定义一个名为Value
的类。private int i;
:定义一个私有成员变量i
,类型为int
。私有的意思是只有这个类内部的方法能访问i
。public void set(int i) { this.i = i; }
:定义一个公有的set
方法,接受一个int
类型的参数i
,并将其赋值给成员变量i
。public int get() { return i; }
:定义一个公有的get
方法,返回成员变量i
的值。
public void set(int i) { this.i = i; }
- set(int i)
- 这是方法的名称和参数列表
- 方法名是 set
- 参数列表中有一个参数 int i ,表示这个方法需要一个整数类型的参数
- { this.i = i ;}
- 这是方法的主体,用 { } 包围
- this 关键字:指当前对象的引用。在实例方法中,this 表示调用这个方法的当前对象
- this.i : 这是当前对象的成员变量 i 。用 this 可以明确表示我们在操作当前对象的成员变量,而不是方法的参数 i
- this.i=i; :将方法参数 i 的值赋给当前对象的成员变量 i 。用于在类的外部通过方法来修改对象的状态
这个方法是一个典型的 "setter" 方法,用来设置对象的某个成员变量的值。在这个例子中,set
方法用来设置 Value
类中私有成员变量 i
的值。
使用示例
Value v = new Value();
v.set(5);
当调用 v.set(5)
时:
- 参数
5
被传递给方法set
。 - 在方法内部,
this.i = i
将5
赋值给对象v
的成员变量i
。 - 结果是,
v
对象的成员变量i
的值变成了5
。
main 方法
public static void main(String[] args) {
Value[] a = new Value[10];
for (int i = 0; i < a.length; i++) {
a[i] = new Value();
a[i].set(i);
}
for (Value v : a) {
System.out.println(v.get());
v.set(0);
}
for (Value v : a) {
System.out.println(v.get());
}
}
-
public static void main(String[] args) {
:定义程序的入口方法main
。 -
Value[] a = new Value[10];
:声明并初始化一个长度为 10 的Value
类型的数组a
。数组中的每个元素最初都为null
。 -
for (int i = 0; i < a.length; i++) {
:使用一个for
循环遍历数组a
的每个索引,从 0 到 9。 -
a[i] = new Value();
:为数组a
的第i
个位置创建一个新的Value
对象。 -
a[i].set(i);
:调用Value
对象的set
方法,将当前索引i
赋值给对象的成员变量i
。 -
for (Value v : a) {
:使用增强型for
循环遍历数组a
中的每个Value
对象。 -
System.out.println(v.get());
:调用Value
对象的get
方法,打印成员变量i
的值。 -
v.set(0);
:将当前Value
对象的成员变量i
设置为 0。 -
for (Value v : a) {
:再次使用增强型for
循环遍历数组a
中的每个Value
对象。 -
System.out.println(v.get());
:再次调用Value
对象的get
方法,打印成员变量i
的值。
程序的输出
- 第一个
for
循环将数组中的每个Value
对象的i
值依次设置为 0 到 9。 - 第二个
for
循环打印出这些值,然后将所有Value
对象的i
值设置为 0。 - 第三个
for
循环再次打印所有Value
对象的i
值,这时所有值都是 0。
输出结果如下:
0
1
2
3
4
5
6
7
8
9
0
0
0
0
0
0
0
0
0
0