Java初学者问题: What is wrong with the code below?

标签 java non-static

public class Function
{
   public static void main(String args[])
   {
      System.out.println(power(3,2));
      System.out.println(power(3,2));
      System.out.println(power(2));
   }
   public long power(int m)
   {
      return m*m;
   }
   public long power(int m,int n)
   {
      long product=1;
      for(int i=1;i<=n;i++)
      {
          product=product*m;
      }
      return product;
   }
}

编译器显示此错误:-

Function.java:5: 无法从静态上下文中引用非静态方法 power(int,int)

[编辑]

抱歉关于缩进的问题:/我会从现在开始记住这一点。

好的,所以我刚刚添加了 static 关键字,它现在工作正常。这个静态关键字有什么区别?我是 java 的初学者,还没有研究过 static 的作用。我肯定会在本书的后续章节中阅读它,但请有人告诉我它的作用。谢谢。

最佳答案

如错误消息所述,没有对象实例,静态方法 (main) 无法调用非静态方法 (power)。

您应该将 power 方法设为静态。

说明

普通的类方法与类的实例相关联。
例如,String.startsWith method只能在 String 实例上调用。在没有字符串实例的情况下调用 startsWith 是没有意义的。

有时,您会希望创建一个不需要类实例的方法。
例如,Integer.parseInt method不在 Integer 实例上调用。仅仅为了能够调用 Integer.parseInt 而必须创建一个 Integer 实例是没有意义的。
这些方法称为 static 方法。

main 是一个static 方法的例子。因为它不是在您的 Function 类的实例上调用的,所以它不能调用实例方法。 (因为没有调用它们的实例)

关于Java初学者问题: What is wrong with the code below?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3047079/

相关文章:

java - 从静态方法访问非静态成员变量

Java 认为一个方法是静态的?

java - 如何增加 JFileChooser 的大小?

java - 如何序列化 ObservableList

java - 将 MySQL JSON 列映射到 hibernate 值类型

Java - 等效指针

java - 使用 Switch 语句创建对象 : Cannot make a static reference to the non-static method?

java - 非静态变量不能被引用

java - 静态方法(main)如何能够捕获非静态方法(构造函数)并执行它?

java - 如何从url或路径(目录)描述jtable中rar/zip文件的内容?