Java静态关键字的使用

标签 java

为什么这段代码不起作用?

HelloWorld.java:5: error: non-static method add(int,int) cannot be
referenced from a static context System.out.println(add(1,2));
  1. 我知道如果我将 static 添加到 add 方法中,它就可以工作,但是为什么我们必须使用 static 呢? 如果这段代码是用 C 语言编写的,它就可以工作,对吗?
  2. 如果您不添加静态添加方法,我可以通过哪些其他方式在 main 中“测试”我的添加方法?

    public class HelloWorld {
    
        public static void main (String []args) { 
            System.out.println(add(1,2));
        }
    
        public int add (int x, int y) {
            return x+y;
        }
    }
    

最佳答案

您必须将 add(int, int) 方法设置为静态

public static int add(int x, int y) {
    return x + y;
}

或者你也可以这样做

public static void main(String[] args) {
    HelloWorld test = new HelloWorld();
    System.out.println(test.add(1, 2));
}

这样做的原因是因为您试图从静态方法调用它。可以使用静态方法而无需创建对象的实例(如第一个场景)。在第二种情况下,add 可以是非静态的,因为我们实际上正在创建对象的实例,因此可以访问它的非静态方法。

关于Java静态关键字的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23257136/

相关文章:

java - 如何在一个递归函数中先向上再向下计数?

Java 8 Generic 的 Generic for Monad Transformer

java - 如何删除一个元素并将其添加到 ArrayList 的末尾?

java - 使用 AngularJS、Spring 和 Hibernate 保存房间预订

java - 需要从 Spring MVC 中的预定方法返回值

java - EJB 可伸缩性 : due to what

java - 如何在 spring 中覆盖 JndiObjectFactoryBean 并在 java 中设置解密密码

尝试创建不同大小的数组时 Java OutOfMemoryError 消息发生变化

Java并发控制台IO

java - 如何与 OBD-II 设备通信