我正在尝试理解以下Java代码,但我不知道在创建对象orc u和orc z的两行上发生了什么。据我所知,每个兽人内部都有一个霍比特人,但它是一个新对象还是作为指针工作?为什么最后一行的z.frodo.fuss等于0,如果u.frodo.fuss被改为0?
public class Hobbit {
public int fuss
public int[] nase = {6}
public static int ohr = 5;
public Hobbit (int f) {
fuss = f + ohr++;
}
}
public class Ork {
public Hobbit frodo;
public Ork (Hobbit sam) {
frodo = sam;
}
}
public class Mittelerde {
public static void zweiTuerme (int[] a, int b) {
a[0] = a[0] * 4;
b = a[0] + 3;
System.out.println("T: " + (a[0] + b));
}
}
public static void main (String[] args) {
Hobbit x = new Hobbit(2);
Hobbit y = new Hobbit(1);
Ork z = new Ork(y);
y = new Hobbit(x.fuss);
Ork u = new Ork(z.frodo);
u.frodo.fuss = 0;
zweiTurme(x.nase, x.fuss);
System.out.print(x.fuss + " x ");
System.out.print(x.nase[0] + " x ");
System.out.print(x.ohr + " x ");
System.out.print(y.fuss + " x ");
System.out.print(y.nase[0] + " x ");
System.out.print(y.ohr + " x ");
System.out.print(z.frodo.fuss + " x ");
}
那么有人可以帮我理解吗?
如果有人能告诉我兽人物体的样子,也会很好。
我知道在Hobbit x = new Hobbit(2);
答案 0 :(得分:0)
据我所知,每个兽人内部都有一个霍比特人,但它是一个新物体还是作为指针工作?
不在每个兽人内部创建了一个新的hobbit。两个兽人z
和u
拥有同一个Hobbit对象的引用(指针) - 您在此行中创建的对象:
Hobbit y = new Hobbit(1);
这是因为在这一行:
Ork u = new Ork(z.frodo);
您正在使用z
的论坛创建一个新的兽人,因此u
的论坛将与z
的论坛相同。
为什么最后一行的z.frodo.fuss等于0,如果是u.frodo.fuss改为0?
由于z.frodo
和u.frodo
是同一个对象,因此当您访问另一个对象时,对其中任何一个所做的更改都会反映出来。这里:
u.frodo.fuss = 0;
您已更改u.frodo
,这与z.frodo
相同。所以当你看z.frodo.fuss
时,你会得到0。
请注意,除了将x
传递给zweiTuerme
之外,您对utf8mb4
做了很多工作。