看不懂啊?

来源:8-10 Java 中的 static 使用之静态初始化块

qq_buzhidao

2018-05-13 08:27

public class HelloWorld {

    

    String name; // 声明变量name

String sex; // 声明变量sex

static int age;// 声明静态变量age

    

    // 构造方法

public name() { 

System.out.println("通过构造方法初始化name");

name = "tom";

}

    

    // 初始化块

System.out.println("通过初始化块初始化sex");

sex = "男";

}

    

    // 静态初始化块

static { 

System.out.printlnst("通过静态初始化块初始化age");

age = 20;

}

    

public void show() {

System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);

}

    

public static void main(String[] args) {

        

        // 创建对象

HelloWorld hello = new HelloWorld();

// 调用对象的show方法

        HelloWorld.show();

        

}

}


写回答 关注

2回答

  • 慕神0152056
    2018-06-17 15:19:49

    错误①:构造方法名应与类名相同

    ②:调用对象show方法应为:hello.show();

  • 飞上云端_
    2018-05-13 10:53:20

    在Java中,有两种初始化块:静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。

    非静态初始化块(构造代码块):
    作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。
    与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化。
    应用:将所有构造函数共性的东西定义在构造代码块中。

    静态初始化块:
    作用:给类进行初始化。随着类的加载而执行,且只执行一次
    与构造代码块的区别:
    1)构造代码块用于初始化对象,每创建一个对象就会被执行一次;静态代码块用于初始化类,随着类的加载而执行,不管创建几个对象,都只执行一次。
    2)静态代码块优先于构造代码块的执行
    3)都定义在类中,一个带static关键字,一个不带static

    构造函数、非静态初始化块、静态代码块都是用于初始化,三者的执行顺序依次是:静态代码块>构造代码块>构造函数。
    其实初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块初始化了。

    静态初始化块的作用就是当JVM在装载类时,你想让它做一些事情,那么,就可以用静态初始化块。这几者的执行顺序是:

    (JVM在装载类时)先装载类的静态成员,再执行静态初始化块(同样,当一个类有继承自某类时,则会先装载该父类,那么,父类的装载或执行顺序,也都如句子所述)。

    (在创建类的实例时)先执行实例初始化块,再执行构造方法;但对于一棵继承树中,会先调用父类的构造方法,那么其执行顺序也如句子所述。


Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530655 学习 · 6091 问题

查看课程

相似问题