【问题标题】:Why don't we have to create object of System or Math classes in java and use them directly?为什么我们不必在 java 中创建 System 或 Math 类的对象并直接使用它们?
【发布时间】:2018-03-29 12:18:01
【问题描述】:

我们使用 System.out.println 而不实例化它或创建它的对象。数学课和许多其他课程也是如此(我猜)。这些课程有什么特别之处吗?我们可以以同样的方式使用这些类中声明的类和方法吗?请帮忙。

【问题讨论】:

  • 我想你在问为什么这个类 API 保持静态而不是实例,对吗?

标签: java class system


【解决方案1】:

这是一种叫做“静态”的方法。为了调用静态方法,您不需要类的实例。

这还有其他副作用,例如不存在的“this”,因此静态方法不能调用实例方法。

这主要用于某些通常是无状态的实用程序类。

数学就是一个很好的例子。

我建议阅读一些关于 Java 中的静态方法和静态方法的知识。

【讨论】:

    【解决方案2】:

    您不必为SystemMath 类创建对象,因为这些类中的方法和变量是static。这意味着它们属于类本身,而不是类的instances

    参考见:

    【讨论】:

      【解决方案3】:

      为什么我们不必在 java 中创建 System 或 Math 类的对象并直接使用它们?

      因为Math的方法被声明为static方法,并且因为System.in/System.out/System.errstatic变量。

      这些课程有什么特别之处吗?

      没有。任何声明为static 的变量或方法都会以这种方式运行。

      我们可以以同样的方式使用这些类中声明的类和方法吗?

      我真的不明白你在那里问什么。但是,如果您问是否可以创建 MathSystem 的实例,以便您可以执行以下操作:

          Math myMath = new Math();
          myMath.min(1, 2);
      
      1. 不,你不能。这两个类都没有公共构造函数,所以你不能new它们。

      2. 如果你能做到,那就太糟糕了!

      参考:

      【讨论】:

      • 对不起,我的上一个问题含糊不清。我的意思是问,我们可以使用我们自己创建的类和方法吗?比如 System.out.println 等等……我想你的答案是肯定的,只要我们将方法和成员变量定义为静态?
      • 是的。你明白了。
      【解决方案4】:

      首先,你不能创建 Math 类的实例,因为它只有一个构造函数,并且它被标记为私有,你不能从类外部创建它的实例。 Snapshot of the source code of the class Math 其次,您不需要这样做。Math类中的所有方法都是静态的,只需使用类名和点运算符即可调用其中任何一个。

      【讨论】:

        【解决方案5】:

        系统类不能实例化/创建对象,因为这个系统类有私有构造函数。 而且它的所有成员和方法都是静态的,可以通过类名直接访问。 这个简单而有效的答案会对您有所帮助。

        【讨论】:

          【解决方案6】:

          我们不会实例化所有其他类或方法,因为 JVM(Java 虚拟机)已经将它们加载到项目中,因此我们可以一次又一次地使用这些类。一个这样的例子是 main 方法。这些类/方法已经为我们预定义好了,所以我们不需要实例化这些类/方法,因为它们是静态的。

          【讨论】:

            【解决方案7】:

            您无需创建SystemMath 类的对象即可使用它,因为它们具有静态方法。静态方法属于类,因此不需要实例化。

            虽然你可以创建它的对象,然后也可以使用那些方法,但是为静态方法创建一个类是没有用的。

            【讨论】:

              【解决方案8】:

              您不必为了使用math 类的方法而实例化对象。

              • 因为使用这个方法我们不需要对象。我们可以直接调用它。
              • 这些类型的类称为static。这里的方法可以由类本身直接调用。
              • 它们已在JVM 中定义。我们不需要实例化来使用这个类的方法。

              【讨论】:

                猜你喜欢
                • 2011-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-01-25
                • 2018-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多