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

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

4

6 回答 6

8

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

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

于 2013-04-09T12:33:05.193 回答
7

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

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

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

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

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

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

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

也可以看看:

于 2013-04-09T12:36:26.583 回答
2

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

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

正确地写你的信息。

于 2013-04-09T12:34:03.523 回答
2

这是另一种方式,称为初始化程序块。"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();//remember 提前创建此类。
尝试调用您自己的类的方法。

于 2013-04-09T12:36:03.217 回答
0

不要将 Java 类视为按顺序执行的东西,每一行都被读入。将类视为一种花哨的工具。喜欢

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()这些工具之一放在外面,你不知道它什么时候会发生,什么会发生,或者它是什么工具的一部分。

于 2013-04-09T12:37:32.153 回答
0

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

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

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

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

于 2013-04-09T12:39:31.953 回答