静态成员的方法是否被认为是静态的?

时间:2018-08-09 05:22:43

标签: java static-members static-import

在以下来自pg的静态导入示例中。 《 Oracle OCA / OCP Java SE 7程序员I和II学习指南》中的16:

import static java.lang.System.out;              // 1
import static java.lang.Integer.*;               // 2
public class TestStaticImport {
  public static void main(String[] args)  {
    out.println(MAX_VALUE);                      // 3
    out.println(toHexString(42));                // 4
  }
}

书中提到标记为3的行:

“现在,我们终于看到了静态导入功能的好处!我们不必在System.out.println中键入System!哇!第二,我们不必在Integer中键入Integer。 MAX_VALUE。因此在这行代码中,我们能够为静态方法和常量使用快捷方式。

在这里将println称为静态方法是错误的吗?

上面的程序如文本所示。

对于标记为4的行,该书说:“最后,我们再做一次快捷方式,这一次是Integer类中的方法。”

3 个答案:

答案 0 :(得分:3)

从书中引用:

  
      
  1. 现在我们终于看到了静态导入功能的好处!我们不必在System.out.println中键入系统!哇!第二,   我们不必在Integer.MAX_VALUE中键入Integer。所以在这个   一行代码,我们能够对静态方法使用快捷方式   常数。
  2.   

您的批评是正确的。在那行代码中,我们没有使用静态方法的快捷方式。相反,它只是静态字段的快捷方式。

答案 1 :(得分:1)

“导入静态”只能引用类的静态成员。
因此,这里是从System类引用“出”对象。
在系统类中,“输出”定义为

  public final static PrintStream out = null;

println()是java.io.PrintStream类的非静态方法。

因此,这里的“导入静态”与println()无关,它仅引用“ out”对象。
而“ out”进一步指的是println()。

与Integer类相同。它正在导入Integer类的所有静态方法和变量。因此,您可以直接将其称为

out.println(MAX_VALUE);  

代替

out.println(Integer.MAX_VALUE);

答案 2 :(得分:-1)

被称为静态的方法是toHexString,而不是println。该行的意思是,他们能够使用单个语句(toHexString)导入MAX_VALUEimport static java.lang.Integer.*;