Java类的成员之代码块

 

 

/**
 * 类成员之 代码块(初始化块)
 * 1.代码块的作用:用来初始化类或者对象
 * 2.代码块如果有修饰的话只能使用static
 * 3.分类:静态代码块和非静态代码块
 * 4.静态代码块
 *     >内部可以有输出语句
 *     >随着类的加载而执行,(不管创建多少对象)只会执行一次
 *     >静态代码块内只能调用静态属性、方法。不能调用非静态的结构
 *     >作用:可以在创建对象时,对类的属性进行初始化
 *     >如果一个类中定义了多个静态代码块。则按照声明的先后顺序执行
 *     >静态代码块与非静态代码块的执行顺序是:优先执行静态代码块
 * 5.非静态代码块
 *     >随着对象的创建而执行
 *     >内部可以有输出语句
 *     >随着对象的创建而执行
 *     >每创建一个对象,就执行一次非静态代码块
 *     >作用:可以在创建对象时,对对象的属性进行初始化
 *     >如果一个类中定义了多个非静态代码块。则按照声明的先后顺序执行
 *     >非静态代码块内可以调用静态属性、静态方法、非静态属性、非静态方法
 *
 * 6.在开发中使用?  有时候会用来对属性进行初始化
 *
 * 7.对属性可以赋值的位置
 *      1).默认初始化
 *      2).显示初始化
 *      3).构造器中初始化
 *      4).有了对象以后,通过“对象.属性”或者“对象.方法”的方式。进行赋值
 *      5).在代码块中赋值
 */
public class BlockTest {
    public static void main(String[] args) {
        String desc = Person.desc;
        System.out.println(desc);

        Person person =new Person();
        Person person2 =new Person();
        System.out.println(person.age);
    }


}
class Person{
    //属性
    String name;
    int age;
    static String desc="我是一个人";

    //构造器
    public Person(){

    }
    public Person(String name,int age){
        this.name = name;
        this.age =age;
    }

    //static代码块   随着类的加载而执行  只会执行一次  静态代码块中可以调用静态结构
    static {
        System.out.println("hello ,static block");
        //可以调用静态方法、静态属性
        inFo();
        desc ="我是一个good man";
        //无法调用非静态的结构,会报错,因为静态代码块是随着类的加载而执行的,此时内存没有该方法
        //eat();

    }

    //非static代码块  随着对象的创建而执行  创建多个对象就执行多次
    {
        System.out.println("hello , block");
        //可以调用非静态结构
        age=1;
        eat();
        //可以调用静态结构
        inFo();

    }

    //方法
    public void eat(){
        System.out.println("吃饭");
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    //静态方法随着类的加载而加载在内存中,执行需要(类.方法)调用
    public static void inFo(){
        System.out.println("我是一个快乐的人");
    }
}

 

posted @ 2021-03-23 23:23  懒惰的咸鱼  阅读(49)  评论(0)    收藏  举报