我有一个这样的程序:
class Test {
final int x;
{
printX();
}
Test() {
System.out.println("const called");
}
void printX() {
System.out.println("Here x is " + x);
}
public static void main(String[] args) {
Test t = new Test();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试执行它,我收到编译器错误:variable x might not have been initialized基于java默认值我应该得到以下输出权?
"Here x is 0".
Run Code Online (Sandbox Code Playgroud)
最终变量是否具有dafault值?
如果我改变我的代码,
class Test {
final int x;
{
printX();
x = 7;
printX();
}
Test() {
System.out.println("const called");
}
void printX() {
System.out.println("Here x is " + x); …Run Code Online (Sandbox Code Playgroud) 我对静态方法有疑问.在下面编写的程序中,输出将是:main.我理解这是因为它main是一个静态方法,所以当类加载时,它会执行.如果是这样,同样的原则也应该适用met(),对吧?因为它也是静态的.为什么只main执行而met()在类加载时不执行?
public class Test {
static void met() {
System.out.println("method");
}
public static void main(String[] args) {
System.out.println("main");
}
}
Run Code Online (Sandbox Code Playgroud)