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