system.out.println statement outside any method in

2019-01-15 18:06发布

问题:

My question is can't we write an output statement outside the main in java? If I enclose it in { } braces then I don't get error, but if I directly write it, I get an error. why so?

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();
   }
} 

I tried writing it in main, it works. Why doesn't it work without a method?

回答1:

When you enclose it in braces, you are putting it in an initializer block, which runs when the class is instantiated. No statements except variables declarations/initialization may take place outside of methods or initialization blocks in Java.



回答2:

A Class can only have attributes or methods.

A class is the blueprint from which individual objects are created.

    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:

It is called an instance initializer . It runs in addition to the constructor each time an instance object is created .

There is another type of block that is called Static Initializer it is when you add a static keyword before { } . This static initializer only runs when the class is first loaded.

So you can write code in these two block and class member functions.

Other than that the only place left is meant for the class data members declaration and initialization.



标签: java main