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

时间:2013-04-09 12:31:33

标签: java

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

如果我在方法中写System.out.println,它似乎有效。但不是直接在课堂上写的。为什么需要一种方法?

6 个答案:

答案 0 :(得分:5)

它与执行的任何其他代码相同 - 它必须在方法内! (是的,是的,对于纯粹主义者,我还包括构造函数和静态/实例初始化块。)考虑一下 - 如果它不在你提出的方法或其他相关代码块中,那么该代码何时获得执行?这没有多大意义。你不能执行一个类本身,你只能执行该类中包含的特定方法/构造函数等。

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

答案 1 :(得分:4)

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

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

例如,如果您希望在ClassLoader加载类时执行代码,则可以使用静态块:

public class MyClass{
    static{
        System.out.println("MyClass loaded");
    }
}

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

public class MyClass{
    {
        System.out.println("New instance of MyClass created");
    }
}

重要的是要说你可以根据需要拥有尽可能多的这些块,并且它们可以出现在类体中的任何位置。运行系统将保证它们按照它们在您的类中出现的顺序执行

另见:

答案 2 :(得分:2)

当它在一个类中时,但在任何方法之外,你不能调用它,你必须创建方法例如getData()并调用

Employee e = new Employee().getData();

正确撰写您的信息。

答案 3 :(得分:1)

这是另一种称为初始化块的方法。每次创建"Employee class"

时,都会打印new Employee
class Employee {

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

}

关于你的问题

  

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

Java编译器旨在限制此类调用。
这不仅适用于System.out.println,而且适用于您从班级调用的任何方法 尝试调用MySystem.myout.myprintln(); //请记得事先创建这样的类。
尝试调用自己的类方法。

答案 4 :(得分:0)

不要将Java类视为按顺序执行的内容,读入每一行。将Class视为一种奇特的工具。像

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!!");
    }
}

每种方法都可以用浴缸来完成。想想瑞士军刀,你有剪刀,刀,镊子,开瓶器。当你打电话时,每个人都有目的。

如果你将System.out.println()置于其中一个工具之外,你就不知道它何时会发生,或者它会发生什么,或者它是什么工具。

答案 5 :(得分:0)

System类包含几个有用的类字段和方法。它无法实例化。

System类提供的功能包括标准输入,标准输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及一种快速复制数组部分的实用方法。

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

您不能只在方法之外运行代码,除非它是变量/常量声明,类声明