• java 基础 --静态


    1. 静态变量和静态代码块是在JVM加载类的时候执行的(静态变量被赋值,以后再new时不会重新赋值),执行且只执行一次
    2. 独立于该类的任何对象,不依赖于特定的实例,被类的所有实例(对象)所共享
    3. 可以通过类名调用 比如:Student.age;
    4. 静态是随类的加载而加载,this是随对象的创建而存在(静态比对象优先)
    因此,静态方法中没有this关键字,即静态方法中不能使用非静态变量
    举例:
    class Student{ public int num = 0; public static void method(){System.out.println(num)} //NG无法从静态上下文中引用非静态变量num }
    5. 静态方法只能访问静态的成员变量和静态的成员方法 6. 静态发法和普通方法一样,当使用时被调用,不同的是一开始系统为其分配内存空间。
    举例1:
    public class Student{ public static void main(String[] args) { method2(); //调用静态方法 new Student().method1(); //调用非静态方法 } public void method1{System.out.println("XXX")} public static void method2{System.out.println("XXX")} } 举例2: class Student{ private Student(){} //把构造方法私有化,外界就不能创建对象了 public static void method1{System.out.println("XXX")} public static void method2{System.out.println("XXX")} } 使用:Student.method1(); Student st = new Student();ss.method1(); //NG 用途:工具类,都是静态方法,直接通过类名调用方法
    7. 父类静态代码块 >> 子类静态代码块 >> 父类构造方法 >> 子类构造方法

    class Code{

    // 静态代码块 >> 构造代码块 >> 构造方法
    // 静态代码块随着类的加载而加载因此优先执行
    // 静态代码块,最优先执行,一般对类进行初始化,只执行一次(第一次)
    ① static {
    System.out.println("XXX")

    }
    // 构造代码块,每次构造函数执行之前执行
    // 可以把多个构造方法中共同代码放在一起,对对象初始化
    {
    System.out.println("XXX");
    }
    public Code(){}
    {
    System.out.println("xxx");
    }

    // ①比main方法先执行
    public static void main(String[]){
    {
    int XXX= 1;
    // 局部代码块,限定变量生命周期,及早释放,提高内存利用率
    System.out.println("XXX");
    }
    }
    }

    8. 举例数据库缓存

    public class CacheDemo {

    即使new了一个新对象,map里数据还是保存的。
    栈是用完就没了,堆是赋值为null/结束是才会被jvm回收。

    static  Map<String, User> cacheMap = new HashMap<String, User>();
    public User getUser(String id){
        String key = User.class.getName() + id;

        User user = cacheMap.get(key));

        if(user != null){
            return user;
        }

        user = QueryDB();

        cacheMap.put(key, user);

        return user;

    }

    public User updateUser(User user){

        updateDB(user);

        String key = User.class.getName() + user.id;

        cacheMap.remove(key);

    }

    }

    9.静态代码块static{},静态方法static void method{}

    一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;
    需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.
    静态方法在类加载的时候 就已经加载 可以用类名直接调用 比如main方法就必须是静态的 这是程序入口。
    两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的.

  • 相关阅读:
    5.11号团队冲刺(十)
    5.10号团队冲刺(九)
    python day04
    python day03
    python day02
    python day01
    模板语法标签继承关系
    DNS解析详情
    和域名相关的知识
    Webpack 4.X webpack.config.js 文件配置(一)
  • 原文地址:https://www.cnblogs.com/ysloong/p/6502273.html
Copyright © 2020-2023  润新知