为什么我们不在java中为静态方法创建对象?

时间:2015-08-14 04:51:40

标签: java class object methods

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

  1. 何时使用className.methodName()
  2. 何时使用对象调用方法为object.methodName()
  3. 以上两个例子的说明将受到赞赏。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 :(得分:0)

对于每个类,我们都有一个名为类对象的对象,它是YourClass.class对象。基于这些对象上的元数据调用静态方法。对于类的实例,将在实际实例上调用方法。 static 非静态方法都存在于方法区域中。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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