Модификатор static при создании объекта
Почему при создании объекта вне метода main надо использовать static
import java.util.Scanner;
class Main {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
}
}
а при создании объекта в методе main static не нужен
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
}
}
Но при этом внутри статического метода нельзя создать статический объект
import java.util.Scanner;
class Main {
public static void main(String[] args) {
static Scanner in = new Scanner(System.in);
}
}
Ответы (1 шт):
Почему при создании объекта вне метода main надо использовать static
Потому что метод main в данном случае объявлен как статический, а статический метод имеет прямой доступ только к статическим полям класса, которым и будет являться экземпляр сканера.
а при создании объекта в методе main static не нужен
В данном случае внутри метода объявляется локальная переменная для объекта сканера. К локальным переменным метода (даже если метод статический) модификатор static НЕ применяется, так как его основное предназначение -- обозначить поля/методы, определённые для всего класса, а не его отдельных экземпляров.
Но при этом внутри статического метода нельзя создать статический объект
Создать статический объект ничто не запрещает, а определить статическую локальную переменную -- бессмысленно, так как это нарушает определение самого понятия "статический".
private static Scanner scanner;
public static void main(String ... args) {
scanner = new Scanner(System.in);
}