Java 代码块

158 阅读2分钟
作用:

用来初始化类或对象的信息(即初始化类或对象的成员变量)

代码块的修饰:

只能使用static进行修饰。

代码块的分类:

静态代码块:使用static修饰
非静态代码块:没有使用static修饰

具体使用
静态代码块

随着类的加载而执行
由于类的加载只会执行一次,进而静态代码块的执行,也只会执行一次
作用:用来初始化类的信息
内部可以声明变量、调用属性或方法、编写输出语句等操作
静态代码块的执行要先于非静态代码块的执行
如果声明有多个静态代码块,则按照声明的先后顺序执行
静态代码块内部只能调用静态的结构(即静态的属性、方法),不能调用非静态的结构(即非静态的属性、方法)

非静态代码块

随着对象的创建而执行
每创建当前类的一个实例,就会执行一次非静态代码块
作用:用来初始化对象的信息
内部可以声明变量、调用属性或方法、编写输出语句等操作
如果声明有多个非静态代码块,则按照声明的先后顺序执行 非静态代码块内部可以调用静态的结构(即静态的属性、方法),也可以调用非静态的结构(即非静态的属性、方法)

练习

无代码块结构!!!


public class User {
    private String userName;
    private String password;
    private long registrationTime;

    public User() {
        System.out.println("新用户注册");
        registrationTime = System.currentTimeMillis(); //获取系统当前时间
        userName = System.currentTimeMillis() + " ";
        password = "123456";
    }

    public User(String userName, String password) {
        System.out.println("新用户注册");
        registrationTime = System.currentTimeMillis();
        this.userName = userName;
        this.password = password;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUserName() {
        return userName;
    }

    public String getPassword() {
        return password;
    }

    public long getRegistrationTime() {
        return registrationTime;
    }

    public String getInfo(){
        return "用户名:" + userName + ",密码" + password + ",注册时间" + registrationTime;
    }
}

有代码块结构!!!

public class User {
    private String userName;
    private String password;
    private long registrationTime;

    public User() {
//        System.out.println("新用户注册");
//        registrationTime = System.currentTimeMillis(); //获取系统当前时间
        userName = System.currentTimeMillis() + " ";
        password = "123456";
    }
// 这两个功能是共有属性,在创建对象后自动生成。所以可以写成代码块结构~~
    {
        System.out.println("新用户注册");
        registrationTime = System.currentTimeMillis();
    }
    public User(String userName, String password) {

        this.userName = userName;
        this.password = password;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUserName() {
        return userName;
    }

    public String getPassword() {
        return password;
    }

    public long getRegistrationTime() {
        return registrationTime;
    }

    public String getInfo(){
        return "用户名:" + userName + ",密码" + password + ",注册时间" + registrationTime;
    }
}