Java中final和static注意事项

本文详细解析了Java关键字final和static的用法及其特点。final用于定义不可更改的类、方法和变量,而static则用于定义类级别的成员,使得它们在不创建对象的情况下也能被访问。

一、final

  关键字final在Java中有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。
 (1)final类无法被继承,同时没有子类,因此final类中的方法默认是final的。
 (2)非final类中的final方法可以被继承,但不能被子类的方法覆盖。
 (3)final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
 (4)final不能用于修饰构造方法。
 (5)父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
 (6)当函数参数为final类型时,只可以读取使用该参数,但是无法改变该参数的值。

二、static

  关键字static表示或者“静态”的意思,Java语言中没有全局变量的概念,类似理解为c语言、c++中“全局”的意思。是用来修饰成员变量和成员方法,或者静态static代码块。
  (1)被static修饰的成员变量和成员方法独立于该类的任何对象。即它不依赖类特定的实例,被类的所有实例共享。对于静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
  (2)用public修饰的static成员变量和成员方法本质是全局变量和全局方法。
  (3)static变量前可以有private修饰,private是访问权限限定,static表示不要实例化,两者之间并不矛盾,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用,但是不能在其他类中通过类名来直接引用。
  (4)static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:
  类名.静态方法名(参数列表...) 
  类名.静态变量名
  静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字。
  (5)用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块(执行优先级高)。

三、final和static共同使用

  (1)static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
  (2)对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
  (3)对于方法,表示不可覆盖,并且可以通过类名直接访问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值