Java 如何调用类/静态方法

Java 如何调用类/静态方法,java,class,oop,object,Java,Class,Oop,Object,在阅读时,我了解到,类方法是在与类同名的对象上调用的 我发现objective-c在a中也做了类似的事情。这里的类恰好是元类的实例 作为另一种主要的面向对象语言,我想知道Java是如何实现的 编辑 我感谢大家的回答。但我的问题不是如何调用类方法。很多答案都在回答这个问题。如果我的问题框架不好或给了你一个错误的想法,我深表歉意。静态方法或变量是使用类本身调用的。 e、 g 如果在类Employee中有一个静态成员作为public static Integer age,则使用Employee.age

在阅读时,我了解到,类方法是在与类同名的对象上调用的

我发现objective-c在a中也做了类似的事情。这里的类恰好是元类的实例

作为另一种主要的面向对象语言,我想知道Java是如何实现的

编辑


我感谢大家的回答。但我的问题不是如何调用类方法。很多答案都在回答这个问题。如果我的问题框架不好或给了你一个错误的想法,我深表歉意。

静态方法或变量是使用类本身调用的。 e、 g

如果在类
Employee
中有一个静态成员作为
public static Integer age
,则使用
Employee.age

方法也是如此。e、 g.
Employee.paySalary()

让我们考虑一个例子。

public class StaticDemo {


    public static void methodToPrintSomething(){
        System.out.println("printing any crap");
    }

    public static void main(String[] args) {

        StaticDemo.methodToPrintSomething();

        StaticDemo obj = new StaticDemo();
        obj .methodToPrintSomething();


    }

}

这里使用
obj.methodToPrintSomething()
调用方法。您可以找到另一个有趣的语句
obj.methodToPrintSomething()
。我们正在创建一个对象来调用静态方法,但这并不意味着我们正在对该对象调用
methodToPrintSomething()
。由于它是静态的,所以在内部,语句
obj.methodToPrintSomething()
将被视为
StaticDemo.methodToPrintSomething()
使用类本身调用静态方法或变量。 e、 g

如果在类
Employee
中有一个静态成员作为
public static Integer age
,则使用
Employee.age

方法也是如此。e、 g.
Employee.paySalary()

让我们考虑一个例子。

public class StaticDemo {


    public static void methodToPrintSomething(){
        System.out.println("printing any crap");
    }

    public static void main(String[] args) {

        StaticDemo.methodToPrintSomething();

        StaticDemo obj = new StaticDemo();
        obj .methodToPrintSomething();


    }

}

这里使用
obj.methodToPrintSomething()
调用方法。您可以找到另一个有趣的语句
obj.methodToPrintSomething()
。我们正在创建一个对象来调用静态方法,但这并不意味着我们正在对该对象调用
methodToPrintSomething()
。由于它是静态的,所以在内部,语句
obj.methodToPrintSomething()
将被视为
StaticDemo.methodToPrintSomething()
在Java中,我们可以使用类名调用静态方法。如

ClassName.staticMethod(args);
请记住,它们是类级别的方法和变量,并且超出了任何对象的范围,因此它们被称为类名。
编译任何有错误的java程序时,您都可以通过JVM看到它的实时演示,因为
main
也是一种静态方法

public class TradingSystem {

    String description = "electronic trading system";

    public static void main(String[] args) {
        description = "commodity trading system";
    }
}
无法对非静态字段描述进行静态引用

  at TradingSystem.main(TradingSystem.java:8)


另请参见
在Java中,我们可以用类名调用静态方法

ClassName.staticMethod(args);
请记住,它们是类级别的方法和变量,并且超出了任何对象的范围,因此它们被称为类名。
编译任何有错误的java程序时,您都可以通过JVM看到它的实时演示,因为
main
也是一种静态方法

public class TradingSystem {

    String description = "electronic trading system";

    public static void main(String[] args) {
        description = "commodity trading system";
    }
}
无法对非静态字段描述进行静态引用

  at TradingSystem.main(TradingSystem.java:8)

另请参见
这里是

参考:

类方法总是在不引用特定对象的情况下被调用

当Java虚拟机调用类方法时,它会根据对象引用的类型选择要调用的方法,对象引用的类型在编译时总是已知的,静态(早期)绑定。

请参阅:

类方法总是在不引用特定对象的情况下被调用

当Java虚拟机调用类方法时,它会根据对象引用的类型选择要调用的方法,对象引用的类型在编译时总是已知的,静态(早期)绑定

静态方法的声明中包含静态修饰符,应该使用类名调用,而不需要创建类的实例,如

此外,静态方法是通过在其前面加上类名来调用的,例如Math.max(i,j);。奇怪的是,它也可以被一个对象限定,这个对象将被忽略,但对象的类将被使用

静态方法的声明中包含静态修饰符,应该使用类名调用,而不需要创建类的实例,如

此外,静态方法是通过在其前面加上类名来调用的,例如Math.max(i,j);。奇怪的是,它也可以被一个对象限定,这个对象将被忽略,但对象的类将被使用


在java中,静态方法属于类而不是该类的对象。因此,静态方法按类名调用,如下所示:

ClassName.staticMethod();

在java中,静态方法属于类而不是该类的对象。因此,静态方法按类名调用,如下所示:

ClassName.staticMethod();

在Java语言中,对类而不是对象调用静态方法,例如
System.currentTimeMillis
。从概念上讲,这与Ruby、ObjC、Smalltalk等非常相似

与Ruby和Objective C不同,这些方法没有被调用的对象实例:Java字节码有一个调用静态方法的特殊字节码指令;此字节码指令不使用堆栈中的对象指针:

INVOKESTATIC "java/lang/System" "currentTimeMillis" "()J"

当使用反射时,静态方法的这种特殊处理表现为不需要指定调用该方法的对象。相反,您可以提供
null
作为调用的目标。

在Java语言中,对类而不是对象调用静态方法,例如
System.currentTimeMillis
。从概念上讲,这与Ruby、ObjC、Smalltalk等非常相似

与Ruby和Objective C不同,这些方法没有被调用的对象实例:Java字节码有一个调用静态方法的特殊字节码指令;这个字节码指令是doe