是什么让public static void main(String args[]) {}
成为测试代码的惯例,而不仅仅是static {}
?
class Test {
public static void main(String args[]) {
System.out.println("testing");
}
}
它看起来具有相同的功能,你可以实例化所有者类,使用它的方法,另一个类,甚至发送输出:
class Test {
static {
System.out.println("testing");
}
}
是否有标准的理由不使用小static {}
进行平均测试?我可以安全地把它作为我的选择/偏好吗?
换句话说,我想找个案例,你把代码放在一个你不能(或者不应该)放入另一个代码中的代码中,它不会运行或给出意想不到的结果等。
答案 0 :(得分:6)
我说最重要的原因是不使用static {}
这样的事情就是你几乎无法控制它的运行时间。 static {}
阻止运行"当班级初始化时#34;这意味着至少有四个(注意西班牙宗教裁判所)为此目的的有害事情:
static {}
块中的副作用。static {}
块,只要它是在来自其他代码的类的任何静态引用之前。 "之前"可能意味着"在VM启动"。 static {}
块的目的是初始化静态类数据(当然可能以非常复杂的方式),并且从前面的几点你可以看出它为什么不是特别有用的别的什么。
答案 1 :(得分:2)
在java中,每个应用程序都需要一个main方法,它将成为应用程序的入口点。所需的主要方法具有如下签名:
public static void main(String[] args)
此方法与您建议的其他方法之间的区别(除了您的应用程序需要使用此签名作为入口点的主方法这一事实)之外,这是一个方法并采用“String [] args”参数。此参数是从控制台运行程序时参数的用途。
每个java应用程序都可以从控制台运行,因此每个应用程序都有一个标准的入口点方法是有意义的,它可以采用任何特殊的参数。
您的static {}块不一定是可以调用的方法或函数,因此它不能用作应用程序的入口点。它不需要参数,您无法控制何时运行其代码块。