作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
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/
我是一名优秀的程序员,十分优秀!