【问题标题】:Why we do not create object for static method in java?为什么我们不在java中为静态方法创建对象?
【发布时间】:2015-08-14 04:51:40
【问题描述】:

有时我们调用className.methodName() 而不为其创建对象,我的意思是不使用className objectName = new constructor() 的语法,然后调用object.methodName()

  1. 何时使用className.methodName()
  2. 什么时候调用对象为object.methodName()的方法?

以上两种情况的解释将不胜感激。

【问题讨论】:

  • 我假设您的意思是 static 方法。考虑看看Understanding Class Members
  • 谷歌“java静态方法”
  • 您是否尝试过至少一次在 Google 上搜索您的问题?如果您尝试过,那么您将节省输入问题的时间。
  • 这个问题对我很有价值。我不是Java的初学者。但是突然间,我觉得我并不清楚静态创建实例方法与构造函数相比的好处。 Alexey Nikitenko 的回答在一定程度上帮助了我。哈哈。

标签: java class object methods


【解决方案1】:

您指的是static 方法。

假设我有这个:

public class A {

    public static void foo(){
        System.out.println("Hooray! I work!");
    }

}

您现在可以在任何其他班级的任何其他地方执行此操作:

A.foo(); 

这是因为该方法是静态的,这意味着它可以被 CLASS 调用。 这意味着它不需要该类的实例即可调用该方法。

但是,即使不是必需的,您仍然可以这样做:

A a = new A();
a.foo();

但由于方法foo() 是静态的,因此不需要实例化对象A 来运行foo() 方法。

【讨论】:

    【解决方案2】:

    首先。当你创建一个类的至少一个静态方法时,你可以使用这个方法而不用创建一个类的实例。例如,这对于创建具有独立逻辑的方法很有用。例如:

     public class Checker {
            public static Boolean month(int value) {
                return (value >= 1 && value <= 12);
            }
        }
    

    您需要多次检查正确的月份值。但是每次创建对象时要做什么。使用静态方法非常有效。

    第二。当您创建对象时,该对象存储在内存中,您将获得指向它的链接。然后该对象可用于例如保存在列表中。 此对象的方法是特定的。您可以保存类数据并与该类的成员进行特定操作。例如:

    List<Animals> animalsList = new ArrayList<>();
    Animal animal = new Animal("dog");
    int legs = animal.getCountLegs(); // specific function for object
    animalList.add(animal); //save if you need
    // use list of object
    

    【讨论】:

      【解决方案3】:

      对于每个类,我们都有一个称为类对象的对象,即YourClass.class 对象。 静态方法是根据这些对象的元数据调用的。对于一个类的instances,方法是在实际实例上调用的。 staticnon-static 方法都存在于方法区域。

      【讨论】:

      • @immibis - 我的意思是说静态方法是基于从这些对象派生的元数据加载的
      【解决方案4】:

      1 点和 2 点之间没有区别,因为在编译期间编译器会生成 ClassName.staticMethod() 而不是 instance.staticMethod()。

      【讨论】:

        【解决方案5】:

        java 中的静态方法属于类(不是它的实例)。它们不使用实例变量,通常会从参数中获取输入,对其执行操作,然后返回一些结果。实例方法与对象相关联,顾名思义,可以使用实例变量。

        【讨论】:

          猜你喜欢
          • 2015-10-07
          • 1970-01-01
          • 2023-03-04
          • 2011-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-16
          • 2010-11-01
          相关资源
          最近更新 更多