Java初学者问题:下面的代码有什么问题?

Ser*_*ity 3 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;
   }
}
Run Code Online (Sandbox Code Playgroud)

编译器显示此错误: -

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

[编辑]

对于缩进的事情很抱歉:/从现在开始我会记住这一点.

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

SLa*_*aks 9

正如错误消息所示,静态方法(main)无法在power没有对象实例的情况下调用非静态方法().

你应该使power方法静态.

说明

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

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

main是一个static方法的例子.由于未在Function类的实例上调用它,因此无法调用实例方法.(因为没有实例可以调用它们)