关于Java中的final,static

final
  • 修饰属性、方法、类
  • 修改属性:值不能更改(常量)
  • 修饰方法:方法不能重写(继承中子类不能重写父类中被final修饰的成员方法)
  • 修饰类:类不能被继承
  • 被final修饰的属性:要不显示赋值,要不构造方法赋值
    //错误:final修饰的属性/变量不能被修改
    class Test {
      final int PI = 3.1415926;  
      public Test(int pi){
        this.PI = pi;
      }
    }
    
  • 面试题:
    • 构造方法能不能被final修饰?(不允许)
    • final abstract能不能同时修饰一个类?(不能)
static
  • 修饰:属性、一般方法、游离块、内部类
  • 面试题:能不能修饰外部类和局部变量?(不能)
  • 修饰属性:静态属性/类变量
  • 修饰方法:静态方法
  • static修饰的成员变量不属于对象的数据结构
  • static成员变量和类的信息放在一起,仅保留一份,用于共享,而不是在堆中保留在每个对象里的多个副本
  • 被static修饰的属性和方法可以用类名字直接调用,可以不创建对象。不过,对象也可以直接调用
  • 静态方法里不能使用非静态属性。(eg:main函数不能直接使用本类中的非静态的成员变量)
  • static游离块在类加载的就被执行,且只执行一次
  • 同时被final,static修饰的是常量,必须声明的同时初始化,不可被改变(在编译时就被指定具体值)
  • static参与的程序执行次序
  • 面试题
    class Test {
        // Test example = new Test();
        static Test example = new Test();
    
        public Test() {
            System.out.println("lalala");
        }
    
        public static void main(String[] args) {
            Test test = new Test();
        }
    }
    // 不加static修饰,程序就存在递归
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值