【问题标题】:How the new keyword is working in this piece of code explain [duplicate]new 关键字在这段代码中是如何工作的解释[重复]
【发布时间】:2022-12-30 23:52:13
【问题描述】:
public class Myclass {
    static int a = 20;

    Myclass() {
        a = 200;
    }

    public static void main(String[] args) {
        new Myclass();
        System.out.println(a);
    }
}

输出是如何来的 200 请解释一下。

我无法理解 new Myclass() 部分

【问题讨论】:

  • 它调用构造函数,为静态a 变量赋值。
  • 对于 Java 中的对象初始化,请查看来自 Oracle 的教程页面:docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
  • 请注意,这段代码仅适用于脑筋急转弯。如果我在野外看到这个,我会用卷起的报纸打在头上的人,并告诉他们“糟糕的开发者!”

标签: java


【解决方案1】:

请记住,new 用于创建类的新实例,并执行构造函数中的代码。

还请记住,static 表示该变量属于该类,而不是任何特定实例,因此您不需要实例即可引用它。

因此,当调用构造函数时,变量 a 被设置为 200 并且这就是您打印出的值,即使该实例刚刚被丢弃。

【讨论】:

    【解决方案2】:

    public class Myclass { 第一行是你班级的定义。一个班级就像一个千篇一律的模子。饼干模具定义了饼干的形状,您可以用它来制作许多饼干,但它不是饼干。第3行的Myclass() {是你的构造函数,你可以自己研究和了解更多关于构造函数的信息。我建议将这一行与第 5 行和第 6 行一起缩进,以提高可读性。请研究代码缩进和格式。就编译器而言,这不会影响代码的“正确性”(因为我们谈论的是 java,其他语言如 python 是不同的)

    最后直接回答你的问题。 new Myclass() 第 7 行使用你的 cookie cutter(你的类)并使用它创建一个实例(cookie)

    因为main(String[] args) 是静态的,所以它不需要执行 Myclass 的实例。研究access modifiersnon-access modifiersto learn more关于这个主题。

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2017-08-08
      相关资源
      最近更新 更多