2013-04-09 3 views
2
class Employee {  
    int DOB; 
    int eid; 
    String name; 
    double salary; 
    System.out.println("Employee class"); 
} 

Если я напишу System.out.println внутри метода, это сработает. Но не при написании непосредственно внутри класса. Почему нужен метод?Почему System.out.println должен быть внутри метода?

+4

Ну, подумайте об этом. если вы напишете его в классе. когда это будет вызвано? –

+0

Уже ответил. http://stackoverflow.com/questions/9763584/java-syntax-error-on-system-out-println-method-call – jaffa

+0

@ user1913197 Не совсем - вопрос в том, почему он должен быть в методе. –

ответ

5

Это то же самое, что и любой другой код, который выполняется - он должен быть внутри метода! (Да, иш, для пуристов я также включаю конструкторы и блоки инициализации статического/экземпляра.) Подумайте об этом - если бы он не был внутри метода или другого связанного кодового блока, как вы предлагаете, тогда, когда этот код получит казнят? Это не имеет большого смысла. Вы не можете выполнить класс per-se, вы можете выполнить только определенный метод/конструктор/и т. Д., Содержащийся внутри этого класса.

Разрешения только для внешних методов и конструкторов - это объявления полей. Поскольку System.out.println() не является декларацией поля, это недопустимо.

2

, когда он будет находиться внутри класса, но вне любого метода, вы не можете назвать это, вы должны создать метод, например, GetData() и вызов

Employee e = new Employee().getData(); 

правильно пишет свое сообщение.

1

Это другой способ, называемый как блок инициализатора. Это будет печатать "Employee class" каждый раз создавать new Employee

class Employee { 

    int DOB; 
    int eid; 
    String name; 
    double salary; 
    { 
     System.out.println("Employee class"); 
    } 

} 

о вашем вопросе

Почему System.out.println должны быть внутри метода?

Java-компилятор предназначен для ограничения таких вызовов.
Это не только для System.out.println, но применимо для любых методов, которые вы вызываете из класса.
Попробуйте позвонить MySystem.myout.myprintln(); // помните о создании таких классов заранее.
Попробуйте использовать метод собственного класса.

4

Он должен быть внутри исполняемого блока кода, который должен быть выполнен. В противном случае нет способа узнать, когда его выполнять.

Это не должен быть метод. Вы можете использовать другие блоки, такие как Static блоков и Instance блоков.

Например, если вы хотите код, который будет выполняться каждый раз, когда класс загружается ClassLoader, вы можете использовать статический блок:

public class MyClass{ 
    static{ 
     System.out.println("MyClass loaded"); 
    } 
} 

Если вы хотите код, который будет выполняться каждый раз, когда новый экземпляр из создан этот класс, вы можете использовать и экземпляр блока:

public class MyClass{ 
    { 
     System.out.println("New instance of MyClass created"); 
    } 
} 

важно сказать, что вы можете иметь столько, сколько из этих блоков, как вам нужно, и они могут появляться в любом месте тела класса.Система выполнения будет гарантировать, что они выполняются в том порядке, что они появляются в классе

Смотрите также:

0

Не думайте о классе Java, как-то который выполняется в порядке, каждая строка читается. Подумайте о классе как обманчивом инструменте. Как

public class Bathtub { 
    private int waterLevel; 

    public void drain() { 
     waterLevel = 0; 
    } 

    public void fill(int newWater) { 
     waterLevel += newWater; 
    } 

    public void playWithDuckies() { 
     System.out.println("Whee this is fun!!"); 
    } 
} 

Каждый метод - это то, что вы можете сделать с ванной. Подумайте о швейцарском армейском ноже, у вас есть ножницы, нож, пинцет, штопор. Каждый из них делает назначение, когда вы его вызываете.

Если вы положили System.out.println() за пределы одного из этих инструментов, вы не знаете, когда это произойдет или что это может произойти или какой инструмент он является частью.

0

Класс System содержит несколько полезных полей и методов класса. Он не может быть создан.

Среди объектов, предоставляемых классом System, входят стандартный вход, стандартный выход и потоки вывода ошибок; доступ к внешним свойствам и переменным среды; средство загрузки файлов и библиотек; и метод утилиты для быстрого копирования части массива.

out - стандартный выходной поток, а println - метод.

Вы не можете просто запустить код вне метода, если это не переменная/постоянная декларация, декларация класса

Смежные вопросы