static与final关键字

static与final的区别

一 static:
1:static表示静态或全局变量,可以修饰属性,方法,代码块。被所有类共享,可以通过类名调用
A a; a.test();,也可以通过创建对象调用A a = new A();a.test();

2 static变量:被static修饰的是类变量或静态变量,没有被static修饰的是实列变量。类中的实例变量是在创建对象时被初始化的,而类变量是在类加载时被创建并进行初始化,类变量只会被创建一次,内存中只有一个内变量,所有类都能共享到,static变量可以修改。
/*类的加载是把类的.class文件调入虚拟机,而实例必须是在类加载之后才可以实例化/

3 static方法:静态方法可以通过类名进行调用,任何实列对象也可以调用因此不能有this,和super关键字,不能访问类的实例变量和实例方法,只能访问静态变量和静态方法。
父子类中:静态方法覆盖静态方法,非静态方法覆盖非静态方法
java的main方法之所以写成static是因为类加载时无法创建对象,静态方法不用通过对象调用,main方法所在类通过main方法入口来运行程序。

4 static代码块:静态代码块,可以有多个,位置可以随便放,不在任何方法体内,JVM加载类时会执行静态代码块,按照先后顺序被执行一次。

当子类继承一个父类时,并创建对象:jvm会先加载类,执行父类的静态代码块——执行子类的静态代码块——在调用new实例后会先调用父类构造函数——调用子类构造函数

二 final:
表示常量,一旦创建就不可以修改的量,可以修饰属性,方法,类。final标记的局部变量为常量,final标记的成员变量在声明时必须赋值或者在构造函数赋值,才能使用。final方法不能被重写,final类不能被继承,final类中方法默认final类型。final不能用于修饰构造方法。Java中的String,Math是final类型,因为String底层的char数组是final类型,不能被修改。

1 final修饰变量:常量,应当大写,一旦赋值不能改变,final没有初始值,在直接初始化时final与static一起。
2 final方法:不能被子类重写
3final修饰类:不能被继承,final类中方法也是final的,父类private方法不能被子类覆盖,所以private默认final类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值