Java 为什么System.out.println必须在方法中?

Java 为什么System.out.println必须在方法中?,java,Java,如果我在一个方法中编写System.out.println,它似乎可以工作。但当直接在类中编写时就不是了。为什么需要一个方法?它与执行的任何其他代码相同-它必须在一个方法中!(是的,ish,对于纯粹主义者来说,我还包括构造函数和静态/实例初始化器块。)想想看——如果它不在您建议的方法或其他相关代码块中,那么该代码什么时候执行?这没有多大意义。不能执行类本身,只能执行该类中包含的特定方法/构造函数等 方法和构造函数声明之外唯一允许的是字段声明。由于System.out.println()不是字段声

如果我在一个方法中编写
System.out.println
,它似乎可以工作。但当直接在类中编写时就不是了。为什么需要一个方法?

它与执行的任何其他代码相同-它必须在一个方法中!(是的,ish,对于纯粹主义者来说,我还包括构造函数和静态/实例初始化器块。)想想看——如果它不在您建议的方法或其他相关代码块中,那么该代码什么时候执行?这没有多大意义。不能执行类本身,只能执行该类中包含的特定方法/构造函数等


方法和构造函数声明之外唯一允许的是字段声明。由于
System.out.println()
不是字段声明,因此不允许使用它。

当它在类内部,但在任何方法外部时,您不能调用它,您必须创建方法,例如getData()和调用

class Employee {    
    int DOB;
    int eid;
    String name;
    double salary;
    System.out.println("Employee class");
}

正确写入消息。

这是另一种称为初始值设定项块的方法。这将在每次创建新员工时打印“员工类”

Employee e = new Employee().getData();
关于你的问题

为什么System.out.println必须在方法中

Java编译器的设计就是为了限制这样的调用
这不仅适用于
System.out.println
,而且适用于从类中调用的任何方法。
尝试调用
MySystem.myout.myprintln()//请记住提前创建此类类

尝试调用您自己的类的方法。

它需要位于要执行的可执行代码块中。否则就无法知道何时执行它

它不一定是一种方法。您可以使用其他块,例如
静态
块和
实例

例如,如果希望在类装入器装入类时执行代码,可以使用静态块:

class Employee {

    int DOB;
    int eid;
    String name;
    double salary;
    {
        System.out.println("Employee class");   
    }

}
如果希望在创建该类的新实例时执行代码,可以使用和实例块:

public class MyClass{
    static{
        System.out.println("MyClass loaded");
    }
}
重要的是,您可以根据需要拥有任意数量的这些块,并且它们可以出现在类主体中的任何位置。运行时系统将保证它们按照它们在类中出现的顺序执行

另请参见:


    • 不要把Java类看作是按顺序执行的,每一行都是读入的。把一个类想象成一个奇特的工具。像

      public class MyClass{
          {
              System.out.println("New instance of MyClass created");
          }
      }
      
      每种方法都是你可以用浴缸做的。想想瑞士军刀,你有剪刀,刀,镊子,开瓶器。每个人都有自己的目标


      如果将
      System.out.println()
      放在这些工具之外,则不知道何时会发生,也不知道会发生什么,也不知道它是哪个工具的一部分。

      系统类包含几个有用的类字段和方法。它不能被实例化

      系统类提供的设施包括标准输入、标准输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及用于快速复制阵列的一部分的实用方法

      out是标准输出流,println是方法


      除非是变量/常量声明或类声明,否则不能在方法之外运行代码。如果你在课堂上随意写。何时调用?已回答@user1913197不完全正确-这里的问题是为什么它必须在一个方法中。如果它回答了你的问题,不要忘记将答案标记为正确。或者你可以留下评论或编辑你的原始帖子,解释为什么答案不令人满意
      public class Bathtub {
          private int waterLevel;
      
          public void drain() {
              waterLevel = 0;
          }
      
          public void fill(int newWater) {
              waterLevel += newWater;
          }
      
          public void playWithDuckies() {
              System.out.println("Whee this is fun!!");
          }
      }