如果我能做
import static java.lang.Math.*;
public class Main
{
public static void main(String[] args)
{
sqrt(25);
}
}
要直接使用Math方法,为什么要这么做:
import static java.lang.System.out.*;
public class Main
{
public static void main(String[] args)
{
println("Hello World");
}
}
不起作用,所以我不能直接使用println方法?
如何使其工作?
答案 0 :(得分:5)
导入静态仅适用于类的静态成员字段/方法。
对于 System.out.println()
退出不是课程。这是一个公共静态对象。如果您阅读了 out 的定义:
/**
* The "standard" output stream. This stream is already
* open and ready to accept output data. Typically this stream
* corresponds to display output or another output destination
* specified by the host environment or user.
* <p>
* For simple stand-alone Java applications, a typical way to write
* a line of output data is:
* <blockquote><pre>
* System.out.println(data)
* </pre></blockquote>
* <p>
* See the <code>println</code> methods in class <code>PrintStream</code>.
*
* @see java.io.PrintStream#println()
* @see java.io.PrintStream#println(boolean)
* @see java.io.PrintStream#println(char)
* @see java.io.PrintStream#println(char[])
* @see java.io.PrintStream#println(double)
* @see java.io.PrintStream#println(float)
* @see java.io.PrintStream#println(int)
* @see java.io.PrintStream#println(long)
* @see java.io.PrintStream#println(java.lang.Object)
* @see java.io.PrintStream#println(java.lang.String)
*/
public final static PrintStream out = null;
然后,您可以导入的最后一个级别是输出本身(以及类 System 的其他成员字段/方法)。这有效:
import static java.lang.System.*;
public static void main(String[] args) throws Exception {
out.println(1);
}
答案 1 :(得分:4)
Java是面向对象的编程语言。您可以使用静态方法,但主要关注对象。您应该阅读有关static
方法的信息。就您而言,sqrt
是静态方法。在第二种情况下,您必须调用一个流(out是一个流,并且也是静态的),但是println
不是静态的。
导入具有non-static
个函数的类时,不能简单地直接使用这些函数,而必须instantiate
该类,然后可以使用该类的实例来调用这些函数。在这里,您可以认为System.out
返回了一个新对象,然后您可以使用该对象来调用将内容打印出来的函数。
这应该有效:
import static java.lang.System.out.*;
public class Main
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}