Android-Java静态代码块&局部代码块

静态代码块:

静态代码块什么时候执行,是由当前类被加载进内存的时候,什么时候当前类被加载进内存?

答:例如 描述好了Student对象,当 new Student(); 的时候,第一步:是把Student类加载进内存,第二步/或者是后续的工作才是 实例化操作处理等;

描述Student对象/实体:

package android.java.oop05;

public class Student {

    private int id = 01;
    private String name = "谢宁";
    private int age = 90;
    private String englishName = "xie lin";


    /**
     * 静态代码块:当前Student类,被加载进内存时 就会执行此静态代码块里面的主体{}
     * 可以说是最先执行的,可以在这里做一些静态成员的初始化工作
     */
    static {
        System.out.println("静态代码块:当前Student类,被加载进内存时 就会执行此静态代码块里面的主体{}");
        System.out.println("");
    }


    /**
     * 构造函数是专门给对象实例化用的:
     *      new Student();      --->        public Student(){}
     *      ...
     *
     * 就算不写构造函数 也会默认有一个无参构造函数;
     * 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
     */
    public Student() {
        System.out.println("无参构造函数,我被new Student()实例化了");
        showAllValue();
        return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
    }


    /**
     * 构造函数是专门给对象实例化用的:
     *      new Student(9);     --->        public Student(int value){}
     *      ...
     *
     * 就算不写构造函数 也会默认有一个无参构造函数;
     * 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
     */
    public Student(int value) {
        System.out.println("有参构造函数,我被new Student(int类型的值)实例化了 value:" + value);
        showAllValue();
        return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
    }


    /**
     * 构造函数是专门给对象实例化用的:
     *      new Student("刘俊", true); ---> public Student(String value1, boolean value2){}
     *      ...
     *
     * 就算不写构造函数 也会默认有一个无参构造函数;
     * 一旦写了 无参构造函数/有参构造函数 后 默认隐式的那个构造函数就不见了
     */
    public Student(String name, boolean isSuccess) {
        System.out.println("无参构造函数,我被new Student(String类型的值, boolean类型的值)实例化了 name:" + name + " isSuccess:" + isSuccess);
        showAllValue();
        return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
    }


    // 打印所有的成员变量值
    private void showAllValue() {
        System.out.println("id:" + id);
        System.out.println("name:" + name);
        System.out.println("age:" + age);
        System.out.println("englishName:" + englishName);
        System.out.println("");
        return; // 此方法默认就有这样一句return;隐式的,是可以让方法弹栈/结束;
    }
}

 

main测试方法:

package android.java.oop05;

public class Demo01 {

    public static void main(String [] args) {

        // new Student();      --->        public Student(){}
        Student student1 = new Student();

        // new Student(9);     --->        public Student(int value){}
        Student student2 = new Student(908909);

        // new Student("刘俊", true); ---> public Student(String value1, boolean value2){}
        Student student3 = new Student("王刚蛋", true);
    }
}

 

执行结果:

Android-Java静态代码块&局部代码块

 

 




 

 

 

局部代码块:

package android.java.oop05;

public class Demo02 {

    public static void main(String[] args) {
        int age = 99;
        double money = 10098903.9;
        // ...

        /**
         * 局部代码块:可以简单的理解为:
         *                      1.不能调用的方法,不能执行的方法
         *                      1.没有方法名的方法,没有返回值得方法
         *                      1.可以放置在方法里面的方法
         * 局部代码块在真实开放过程中,用的比较少,但它的作用有:
         *                                          1.写在局部代码块中的属性,外界无法访问;
         *                                          2.可以对复杂/混乱的代码,进校包裹,可读性很强;
         */
        {
            double superMoney = 999999999999.00;
        }

        /**
         * 此时如果想访问superMoney,就访问不了,因为superMoney放置在了局部代码块中
         */
        // superMoney
    }

}

 

Android-Java静态代码块&局部代码块

上一篇:【rqnoj39】 饮食问题


下一篇:安卓逆向学习---初始APK、Dalvik字节码以及Smali