Я не понимаю значения ключевого слова static
при импорте System
class:
import static java.lang.System.*
Читаю книгу про Java и там написано:
Any объявление импорта, в котором не используется слово
static
, должно начинаться с именем пакета и должно заканчиваться одним из следующих символов:
- Имя класса в этом пакете
- Звездочка (указывающая на все классы в этом пакете)
Например, объявление import
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(" .");
}
}
И это работает, когда я импортирую таким образом:
import static java.lang.System.out;
import static java.lang.System.*
Но не работает, когда я пытаюсь сделать это:
import java.lang.System.out;
import java.lang.System.*
Что означает static
ключевое слово в данном конкретном случае?
И зачем импортировать java.lang.*;
не импортирует весь пакет с классом System
в нем?