【问题标题】:system.out.println statement outside any method in javajava中任何方法之外的system.out.println语句
【发布时间】:2013-09-18 16:21:30
【问题描述】:

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

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的基础知识,如果您需要任何关于java基础的解释,请随时询问

标签: java main


【解决方案1】:

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

【讨论】:

  • 我不知道为什么人们又用Why question回答这个问题。为什么我们不能?
  • @UnKnown 为什么你不能呢?许多“为什么”问题的答案是“因为这就是语言的设计方式”
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    它被称为 instance initializer 。每次创建实例对象时,它都会在构造函数之外运行。

    还有另一种类型的块称为Static Initializer,即在 { } 之前添加静态关键字时。此静态初始化程序仅在首次加载类时运行。

    所以你可以在这两个块和类成员函数中编写代码。

    除此之外,唯一剩下的地方是用于类数据成员的声明和初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      相关资源
      最近更新 更多