Java中“static” 用法大全

一、类加载的过程:

java通过编译生成class文件,经过类加载器将class文件加载成字节码文件去执行

加载:将字节码文件加载到内存中

校验:检查字节码的安全性

准备:会给静态变量开辟内存空间,并且设定一个标记值。标记值可能会被舍弃

解析:虚拟机将常量池内的符号引用替换为直接引用的过程

初始化:开始执行静态代码块和静态变量赋值的代码。没有特定的顺序,哪行代码在上就先执行。

二、静态变量

(1)静态变量:使用static修饰的变量,又称之为类变量

(2)以使用类名.变量名来调用静态变量

(3)静态变量是随着类的加载加载到方法区的,是先于对象出现的,在方法区中会有一个默认值。不同的对象使用的静态变量是同一个。可以使用类名直接访问。在方法区中,有静态区和非静态区。静态变量是在静态区内。

【1】类是加载到方法区的

【2】类是第一次使用时才加载

【3】类只加载一次(静态变量、静态方法、静态代码块只加载一次)

补充:因为静态变量是先于对象出现的,所以不能在构造方法中申明静态变量

三、静态方法

(1)使用static修饰的方法称之为静态方法。静态方法会随着类的加载而加载到方法区中,当静态方法被调用时,去栈中执行。静态方法也是先于对象而存在的。

(2)使用类名.静态方法名()的形式调用

四、静态代码块

(1)被static修饰的{}.静态代码块随着类的加载而加载,会在加载类时调用。静态代码块在栈中执行的。

(2)静态代码块 构造代码块 构造方法执行顺序:
父类静态 --> 子类静态-->父类非静态--> 子类非静态

补充:

构造代码块在类中,方法外,使用“{}”扩起的代码片段

注意点:代码块是在创建对象时,调用的。只要实例化一个对象,就会调用一下代码块。而静态代码块,只加载一次。

此外,代码块先于构造方法执行。

局部代码块在方法内,使用“{}”扩起的代码片段

注意点:局部代码块是为了减少栈内存消耗创建的,为了提高栈内存效率。它多用来提前释放局部变量。

public void test(){
  { 
    int a = 10;
    int b = a + 5;
  }
    b++;
    for(int i = 0 ; i< b ; i++){
        System.out.println("执行"+i+"次了");
    }   
}

因为在后面就不会是用a变量了,故可以提前释放a变量在栈中内存。

 

补充:static常见题目

https://blog.csdn.net/c17315377559/article/details/98998499

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值