为什么java中的abs()不能工作?

为什么java中的abs()不能工作?,java,syntax,Java,Syntax,我一直有一个问题:它可能是非常基本的 为什么我要学数学。abs-100而不能学abs-100 我认为数学是一门课。abs是一种静态方法。但是为什么我不能简单地导入java.lang.Math并使用abs-100呢?java.lang.Math在每个java类中都是静态导入的 static import java.lang.Math; java.lang包的每个类都是这样导入的。您可以导入Math中的所有方法: 或者只是您想要的一种方法: import static java.lang.Math

我一直有一个问题:它可能是非常基本的

为什么我要学数学。abs-100而不能学abs-100


我认为数学是一门课。abs是一种静态方法。但是为什么我不能简单地导入java.lang.Math并使用abs-100呢?

java.lang.Math在每个java类中都是静态导入的

static import java.lang.Math;
java.lang包的每个类都是这样导入的。

您可以导入Math中的所有方法:

或者只是您想要的一种方法:

import static java.lang.Math.abs;
普通导入只导入类,通过其短名称使该类可用。

abs是一个静态方法,为了让编译器知道它的定义位置,您必须在case-Math中指定该类

请注意,您可以在Math.abs上执行静态导入,然后您可以只执行abs-100而不是Math.abs-100。在这种情况下,您必须添加如下导入语句:

import static java.lang.Math.abs;

还要注意,在Java中,与JavaScript和PHP不同,没有任何公共函数,这就是为什么导入语句很重要。

正如您所知,Java中的所有内容都在类中。因此,它们只能是两种选择

静态函数和 非静态函数

而java.lang.Math是一个实用程序库。创建此对象对您来说不值得。所以Java人员在这个库中创建了所有静态函数


对于您的问题,您可以直接调用成员函数,当且仅当它们是同一类的成员时

如果使用import static java.lang.Math.*,则可以@斯图尔图斯克。。我的评论是对另一条评论的,现在被删除了。我在某个地方读到静态导入是谷歌糟糕的编码实践…:它不应该是静态导入而不是静态导入吗?谢谢你的回答!但是如何读取静态导入?通常情况下,静态意味着存在的东西没有实例。这如何适用于导入?和@JonSkeet:请编辑您的答案:静态导入不起作用。我需要是‘import static’@ChristianHenkel:您应该将其理解为导入这些类型的静态成员。看见
import static java.lang.Math.abs;