Java:使用另一个类中的方法在类中创建对象

时间:2018-01-30 16:10:23

标签: java class object methods

我正在尝试理解以下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);

之后,霍比特人x看起来像这样
  • x.fuss = 7
  • x.nase = {6}
  • x.ohr = 6

1 个答案:

答案 0 :(得分:0)

  

据我所知,每个兽人内部都有一个霍比特人,但它是一个新物体还是作为指针工作?

在每个兽人内部创建了一个新的hobbit。两个兽人zu拥有同一个Hobbit对象的引用(指针) - 您在此行中创建的对象:

Hobbit y = new Hobbit(1);

这是因为在这一行:

Ork u = new Ork(z.frodo);

您正在使用z的论坛创建一个新的兽人,因此u的论坛将与z的论坛相同。

  

为什么最后一行的z.frodo.fuss等于0,如果是u.frodo.fuss改为0?

由于z.frodou.frodo是同一个对象,因此当您访问另一个对象时,对其中任何一个所做的更改都会反映出来。这里:

u.frodo.fuss = 0;

您已更改u.frodo,这与z.frodo相同。所以当你看z.frodo.fuss时,你会得到0。

请注意,除了将x传递给zweiTuerme之外,您对utf8mb4做了很多工作。