class Employee {
int DOB;
int eid;
String name;
double salary;
System.out.println("Employee class");
}
如果我在内部编写System.out.println
一个方法,它似乎可以工作。但不是直接在类中编写时。为什么需要一种方法?
class Employee {
int DOB;
int eid;
String name;
double salary;
System.out.println("Employee class");
}
如果我在内部编写System.out.println
一个方法,它似乎可以工作。但不是直接在类中编写时。为什么需要一种方法?
它与执行的任何其他代码相同 - 它必须在方法内!(是的,对于纯粹主义者来说,我还包括构造函数和静态/实例初始化程序块。)考虑一下 - 如果它不在您建议的方法或其他相关代码块中,那么该代码何时会得到执行?这没有多大意义。您不能执行一个类本身,您只能执行该类中包含的特定方法/构造函数等。
在方法和构造函数声明之外唯一允许的是字段声明。由于System.out.println()
不是字段声明,因此是不允许的。
它需要位于要执行的可执行代码块内。否则无法知道何时执行它。
它不一定是一种方法。您可以使用其他块,例如Static
块和Instance
块。
例如,如果您希望在 ClassLoader 加载类时执行代码,则可以使用静态块:
public class MyClass{
static{
System.out.println("MyClass loaded");
}
}
如果您希望在创建该类的新实例时执行代码,您可以使用和实例块:
public class MyClass{
{
System.out.println("New instance of MyClass created");
}
}
重要的是,您可以根据需要拥有任意数量的这些块,并且它们可以出现在类主体的任何位置。运行时系统将保证它们按照它们在你的类中出现的顺序执行
也可以看看:
当它在一个类内,但在任何方法之外,你不能调用它,你必须创建方法,例如 getData() 并调用
Employee e = new Employee().getData();
正确地写你的信息。
这是另一种方式,称为初始化程序块。"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 提前创建此类。
尝试调用您自己的类的方法。
不要将 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()
这些工具之一放在外面,你不知道它什么时候会发生,什么会发生,或者它是什么工具的一部分。
System 类包含几个有用的类字段和方法。它不能被实例化。
System 类提供的设施包括标准输入、标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及一种用于快速复制数组的一部分的实用方法。
out 是标准输出流,println 是方法。
你不能只在方法之外运行代码,除非它是一个变量/常量声明,一个类声明