小编use*_*874的帖子

Java Final变量是否具有默认值?

我有一个这样的程序:

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)

java final

78
推荐指数
3
解决办法
1万
查看次数

在java中加载类时静态方法的初始化

我对静态方法有疑问.在下面编写的程序中,输出将是: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)

java

5
推荐指数
4
解决办法
7112
查看次数

标签 统计

java ×2

final ×1