System.out.println вне любого метода в java

Мой вопрос: мы не можем написать выходной оператор за пределами main в java? Если я заключу его в {} фигурные скобки, то я не получу ошибки, но если я его непосредственно напишу, я получаю сообщение об ошибке. почему так?

public class abc 
{ 
   int a=3; 
   int b=0; 
   System.out.println("this statement gives error"); //Error!! 
   {System.out.println("this works fine");} 
   public static void main(String args[]) {

   System.out.println("main"); 
      abc t=new abc();
   }
} 

Я пробовал писать его в основном, он работает. Почему он не работает без метода?

Ответ 1

Когда вы заключите его в фигурные скобки, вы помещаете его в блок инициализатора, который запускается при создании экземпляра класса. Никаких утверждений, кроме переменных деклараций/инициализации, не может выполняться вне методов или блоков инициализации в Java.

Ответ 2

A Class может иметь только атрибуты или методы.

A class - это проект, из которого создаются отдельные объекты.

    int a=3;   // attributes
    int b=0;   // attributes
    System.out.println("this statement gives error"); //Error!! 

    {System.out.println("this works fine");}  // init block whenever an object is created.
                                              // since it is inside { }

Ответ 3

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

Существует еще один тип блока, который называется Статический инициализатор, когда вы добавляете статическое ключевое слово до {}. Этот статический инициализатор запускается только при первом загрузке класса.

Итак, вы можете написать код в этих двух блочных и классных функциях члена.

Кроме того, единственное место, которое осталось, предназначено для объявления членов класса и инициализации.