zoukankan      html  css  js  c++  java
  • 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);
        }
    }

    执行结果:




    局部代码块:

    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
        }
    
    }
  • 相关阅读:
    mysql 语法
    mycat 配置简介
    redis sentinel 配置
    Spark SQL 读到的记录数与 hive 读到的不一致
    HDP3.1 中 YRAN 和 MR2 的内存大小配置的计算方式
    在 windows 下搭建 IDEA + Spark 连接 Hive 的环境
    HDP3.1 中配置 YARN 的 timeline server 使用外部的 HBase
    大规模使用 Apache Kafka 的20个最佳实践
    卸载mac版本的GlobalProtect
    js解决约瑟夫问题
  • 原文地址:https://www.cnblogs.com/android-deli/p/10349147.html
Copyright © 2011-2022 走看看