我的问题是我们不能在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();
}
}
我尝试用main编写它,它有效。如果没有方法,它为什么不起作用?
答案 0 :(得分:8)
将它括在大括号中时,将它放在初始化块中,该块在实例化类时运行。除变量声明/初始化之外的任何语句都不能在Java中的方法或初始化块之外进行。
答案 1 :(得分:4)
Class
只能有属性或方法。
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 { }
答案 2 :(得分:3)
它被称为instance initializer。每次创建实例对象时,它都会在构造函数之外运行。
还有另一种类型的块称为Static Initializer,它是在{}之前添加静态关键字时的。此静态初始化程序仅在首次加载类时运行。
因此,您可以在这两个块和类成员函数中编写代码。
除此之外,剩下的唯一地方是用于类数据成员声明和初始化。