七、java学习之静态关键字和代码块

一、static关键字

/*
 * static:是一个关键字,用于修饰成员变量和成员方法
 * static的特点:
 * 			被所有的对象所共享
 * 			可以使用类名调用
 * 			静态的加载优先于对象
 * 			随着类的加载而加载
 * * static的注意事项:
 * 			静态方法:
 * 				可以调用静态的成员变量
 * 				可以调用静态的成员方法
 * 				不可以调用非静态成员变量
 * 				不可以调用非静态成员方法
 * 				静态方法只能调用静态的成员
 * 			非静态方法:
 * 				可以调用静态的成员变量
 * 				可以调用静态的成员方法
 * 				可以调用非静态的成员变量
 * 				可以调用非静态的成员方法
 *
 * 	静态的方法中是否有this这个对象?没有的
 *
 *
 */
public class staictext {
    public static void main(String[] args) {
        Person.graduateFrom = "传智学院";

        Person p = new Person();
        p.name = "小苍同学";
        p.age = 18;
        //p.graduateFrom = "传智学院";
        p.speak();

        Person p2 = new Person();
        p2.name = "小波同学";
        p2.age = 20;
        //p2.graduateFrom = "传智学院";
        p2.speak();
        Person.study();
        p2.eat();

    }
}

class Person {
    String name;
    int age;
    static String graduateFrom;//毕业院校

    public void speak() {
        System.out.println(name + "---" + graduateFrom);
    }
    public static void study() {
        System.out.println(graduateFrom);

    }

    public static void sleep() {
        System.out.println("sleep");

    }

    public void eat() {

        System.out.println(graduateFrom);
    }
}

二、代码块

局部代码块:以”{}”划定的代码区域,此时只需要关注作用域的不同即可
构造代码块:优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
每创建一个对象均会执行一次构造代码块。
静态代码块:它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。该类不管创建多少对象,静态代码块只执行一次。可用于给静态变量赋值,用来给类进行初始化。

/*
 *   Coder静态代码块执行 --- Coder构造代码块执行 --- Coder无参空构造执行
 *
 *
 *   BlockTest静态代码块执行 --- BlockTest的主函数执行了 --- Coder静态代码块执行 --- Coder构造代码块执行 --- Coder无参空构造执行
 *   Coder构造代码块执行 --- Coder无参空构造执行
 *
 */
public class staictext {
    static {
        System.out.println("BlockTest静态代码块执行");
    }

    {
        System.out.println("BlockTest构造代码块执行");
    }


    public void BlockTest(){
        System.out.println("BlockTest无参构造执行了");
    }

    public static void main(String[] args) {
        System.out.println("BlockTest的主函数执行了");
        Coder c = new Coder();
        Coder c2 = new Coder();
    }
}

class Coder {

    static {
        System.out.println("Coder静态代码块执行");
    }

    {
        System.out.println("Coder构造代码块执行");
    }

    public Coder() {
        System.out.println("Coder无参空构造执行");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值