繁体   English   中英

java 中任何方法之外的 system.out.println 语句

[英]system.out.println statement outside any method in java

我的问题是我们不能在 java 的 main 之外写一个 output 语句吗? 如果我将它括在 {} 大括号中,那么我不会出错,但如果我直接写它,我会出错。 为什么这样?

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 写它,它有效。 为什么没有方法就不行呢?

当您将它括在大括号中时,您就是将它放在一个初始化程序块中,该程序块在类被实例化时运行。 除了变量声明\/初始化之外,任何语句都不能发生在 Java 中的方法或初始化块之外。

"

一个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 { }

基础/基础

Java Class仅包含成员函数和 class 变量以及一些其他异常,例如 instance initliazer、static 块等。

您不能只在Class中随心所欲地散布可执行文件(如System.out.println() )。


实例初始化器

{...} in Java 是instance initializer ,每当创建object时都会调用它。 因为它是instance initializer ,所以它实际上在constructor之前被调用。

您可以在{...}instance initializer中编写System.out.println()


Static块

static{...}在 Java 中称为static block ,其中包含当classJVM加载时仅调用一次的代码行。

同样,您可以在{...}static block中编写System.out.println()


下面的简单可执行示例

public class JavaExample {
    public JavaExample (String name){
        System.out.println("Inside constructor" + name);
    }
    {
        System.out.println("Inside instance initializer");
    }

    static{
        System.out.println("Inside static block");
    }
    //System.out.println("Will give error"); //ERROR

    public static void main(String[] args) {
        JavaExample obj1 = new JavaExample ("obj1");
        JavaExample obj2 = new JavaExample ("obj2");
        System.out.println("Inside the public static void main");
    }
}

Output

> Inside static block 
> Inside instance initializer 
> Inside constructor: obj1 
> Inside instance initializer 
> Inside constructor: obj2 
> Inside the public static void main

请注意执行顺序。

  1. Static 块(当 JVM 加载 Class 时被调用一次,因此首先)
  2. 实例初始化器(在调用任何 object 实例化之前)
  3. 构造函数(在 object 创建/初始化期间)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM