我一直有一个关于java.lang.Math的问题:(可能非常基本)
为什么我必须Math.abs(-100)
而不能abs(-100)
?
我认为Math
是一个班级。 abs
是一种静态方法。但为什么我不能简单地导入java.lang.Math
并使用abs(-100)
?
答案 0 :(得分:7)
您可以导入Math
中的所有方法:
import static java.lang.Math.*;
或只是您想要的一种方法:
import static java.lang.Math.abs;
正常导入只导入类,通过其短名称使该类可用。
答案 1 :(得分:3)
abs
是一个static
方法,为了使编译器知道它的定义位置,你必须指定类(在你的情况下是Math
)。
请注意,您可以在static import
上执行Math.abs
,然后您就可以abs(-100)
代替Math.abs(-100)
。在这种情况下,您必须添加一个import
语句,如下所示:
import static java.lang.Math.abs;
另请注意,在Java中,与JavaScript和PHP不同,没有任何公共函数,这就是import
语句很重要的原因。
答案 2 :(得分:1)
java.lang.Math在每个Java类中静态导入。
static import java.lang.Math;
java.lang包的每个类都以这种方式导入。
答案 3 :(得分:0)
如你所知,java中的所有内容都在类中。所以他们只能是两种选择。
静态功能和 非静态功能
java.lang.Math
是一个实用程序库。创建这个对象不值得。所以Java人员在这个库中创建了静态的所有函数。
对于您的问题,您可以直接调用成员函数,当且仅当它们是同一个类的成员时。