abstract | boolean | break | byte | case |
catch | char | class | const | continue |
default | do | double | else | extends |
final | finally | float | for | goto |
if | implements | import | instanceof | int |
interface | long | native | new | package |
private | protected | public | return | short |
static | strictfp | super | switch | synchronized |
this | throw | throws | transient | try |
void | volatile | while |
this 关键字
作用:获取当前对象的引用
限制:this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。
在这里只讲this的其中一个用法
这种用法就是构造函数的第一个语句,它的形式是 this(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。如下面例子。
附:输出结果是5
final 关键字
Java关键字final的含义存在着细微的区别,但通常它指的是 “这是无法改变的。”不想做改变可能出于两种理由:设计或效率。由于这两个原因相差很远,所以关键字final有可能会误用。下面将会用到final的三种情况:数据、方法和类。
- final数据
final关键对于一些数据如果永恒不变的话是很有用的,比如:
①一个永恒不改变的编译时常量。
②一个在运行时被初始化的值,而你不希望它被改变。
一个既是static又是final的域只占据一段不能改变的存储空间。 当对对象引用而不是基本类型运用final时,其含义会有一点令人迷惑。对于基本类型,final使数值恒定不变;而用于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象其自身却可以被修改的。简单来讲,就是假如有个引用指向String类型对象,对象名为 str,当用final之后,这个引用是不能变的,它一直指向str这个对象,但是呢这个str自身是可以改变的。
- final方法
使用final方法的原因有两个。
第一个原因是把方法锁定,以防任何继承类修改它的含义。在《Java编程思想》中提到,这是处于设计的考虑:想要确保在继承中使方法行为保持不变,并且不会被覆盖。
第二个原因是效率。
类中所有的 private 方法都隐式地指定为是final的。由于无法取用 private 方法,所以也就无法覆盖它。可以对 private 方法添加 final 修饰词,但这并不能给该方法增加任何额外的意义。
- final类
当某个类的整体被定义为 final 时(通常将关键字 final 置于它的定义之前),就表明你不打算继承该类,而且也不允许别人这样做。换句话说,出于某种考虑,你对该类的设计永不需要做任何变动,或者出于安全的考虑,你不希望它有子类。