static关键字

static关键字

1、static修饰静态变量

语法特征:

​ 1、static 修饰的静态成员变量在内存的数据区

​ 2、static 修饰的静态成员变量在整个代码的运行周期中有且只有一个。

​ 3、static 修饰的静态成员变量在类文件加载阶段,需要准备就绪,已具备数据提供能力和数据存储能力。

​ 4、static 修饰的静态成员变量别名类变量,语法建议直接通过类名操作。

​ 5、使用建议:

​ 静态成员变量最好不要和类对象有相关性。

​ 静态成员变量生命周期从类加载开始道程序结果。

​ 类对象从实例化对象对象开始,到JVM GC 回收结束。 可以实例化对象相当于程序开始运行,晚于静态成员变量加载。 GC 收回是在程序推出之前,完成内存收回工作之后,静态成员变量销毁。

2、static 修饰成员方法

​ 语法特征:

​ 1、静态成员方法使用 static 修饰。

​ 2、static 修饰的静态成员方法不允许使用类内的非静态成员

​ static 修饰的静态成员方法在类加载阶段已具备执行能力,方法内有非静态相关内容,无法执行,因为非静态成员需要实例化对象调用操作,加载过程中没有相关的对象存在。没有对象

​ 3、 static 修饰的静态成员方法可以直接使用类内的其他静态资源。

​ 4、静态成员方法常用于工具类封装。 静态成员方法是可以通过类名直接调用,可以摆脱类对象的限制,执行效率高。无需考虑对象实例化过程 ,以及销毁对象过程的时间和内存空间的占用浪费。

​ 5、静态成员方法推荐使用类名直接调用,也可以称之为类方法

3、static 修饰静态代码块

​ 语法特征:

​ 1、静态代码块在类文件加载阶段一定执行!! 并且有且执行一次。

​ 2、静态代码块可以调用类内的其他静态资源。

​ 3、静态代码块不可以调用类内的非静态资源。

​ 4、静态代码块一般用于程序初始化操作,预处理操作,项目运行前准备工作。 案例:配置资源读取、配置文件读取、相关资源加载。

4、static 面试题
package com.qfedu.c_static;

public class Demo5 {
    static Demo5 d1 = new Demo5();
    static Demo5 d2 = new Demo5();

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

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

    public Demo5() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Demo5 demo5 = new Demo5();
    }
}

结果:   /*
        构造代码块
        构造方法
        构造代码块
        构造方法
        静态代码块
        构造代码块
        构造方法
         */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值