Gre*_*een 6 java import package java.lang.class
static
导入System
类时我不明白关键字的含义:
import static java.lang.System.*
Run Code Online (Sandbox Code Playgroud)
我正在读关于Java的书,它写在那里:
任何不使用该单词的导入声明都
static
必须以包的名称开头,并且必须以下列任一方式结束:
- 该包中的类的名称
- 星号(表示该包中的所有类)
例如,声明导入
java.util.Scanner;
有效,因为它java.util
是Java API中包Scanner
的名称,并且 是java.util
包中类的名称.这是另一个例子.声明
import javax.swing.*;
是有效的,因为它javax.swing
是Java API中包的名称,星号是指包中的所有类javax.swing
.
我有以下代码:
public class Addition {
public static void main(String[] args) {
double num;
num = 100.53;
num = num + 1000;
// So when I want to import the whole package java.lang as written in the book, it doesn't work:
// import java.lang.*;
// or like this:
// import static java.lang.*;
// NetBeans in both cases doesn't see these abbreviated names `out` and throws errors. Why?
out.print("The result is ");
out.print(num);
out.println(" .");
}
}
Run Code Online (Sandbox Code Playgroud)
当我以这种方式导入时它可以工作:
import static java.lang.System.out;
import static java.lang.System.*
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时不起作用:
import java.lang.System.out;
import java.lang.System.*
Run Code Online (Sandbox Code Playgroud)
static
在这种特殊情况下,关键字的含义是什么?
为什么import java.lang.*;
不用类导入整个包System
呢?
Oli*_*rth 11
一个static
进口允许你这样写:
out.print("The result is ");
Run Code Online (Sandbox Code Playgroud)
而不是这个:
System.out.print("The result is ");
Run Code Online (Sandbox Code Playgroud)
参见例如http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html.