Java的static关键字

1. Static关键字

1.1 静态方法

static标记的方法被称为静态方法。

  • 静态方法在调用的时候不需要实例化对象

  • 静态方法直接通过类的名称来调用的

  • 静态方法内部只能调用静态变量和其他静态方法,但是非静态方法可以调用静态方法

  • 静态方法中不能使用this

  • 静态方法不能自动销毁,自建立开始静态方法一直存在内存中,直到JVM关闭

  • 子类在调用之前,父类中所有的静态方法都会执行

静态方法的本质是共享代码段,类中的静态方法和静态变量在创建后共用一块内存

1.2 静态变量

静态变量在类被加载的时候就初始化了,在该类的任何静态方法执行之前就初始化,类的所有实例对象共享同一个静态变量

在这里插入图片描述

静态变量的本质是共享数据段,所以一旦改变一个对象中静态变量的值后,其所有实例对象的该变量值也会随之改变

用一个例子来说明静态方法的执行:

public class StaticSuper {
    static {
        System.out.println("super static block");
    }
    StaticSuper() {
        System.out.println("super constructor");
    }
}

public class StaticTest extends StaticSuper {
    static int rand;

    static {
        rand = (int) (Math.random()*6);
        System.out.println("static block"+rand);
    }

    StaticTest(){
        System.out.println("constructor");
    }

    public static void main(String[] args) {
        /*
        在子类的main方法执行之前,会先执行父类中的静态方法,然后执行子类中的静态方法
        super static block
		static block3
        */
        System.out.println("main");
        
        StaticTest staticTest = new StaticTest();
        // 先执行父类构造方法,然后执行子类构造方法
        // 输出super constructor constructor
    }
}

2. final关键字

final关键字表示最终的意思,即不能再被修改

  • final修饰的变量不能被修改

  • final修饰的方法不能被重写

  • final修饰的类不能被继承

如果一个类已经标记为final,不能其方法就不需要再被标记为final

3. 权限修饰符

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值