Java之关键字

Apr 25, 2021


关键字表
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(参数表),这个构造函数就会调用同一个类的另一个相对的构造函数。如下面例子。

public class This {
	
	String name;
	int num;    
	
	public This(String name) {
		this(name,5);
	}
	
	public This(String name,int number) {
		this.name=name;
		this.num=number;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		This t=new This("你好");
		System.out.println(t.num);
	}

}

附:输出结果是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 置于它的定义之前),就表明你不打算继承该类,而且也不允许别人这样做。换句话说,出于某种考虑,你对该类的设计永不需要做任何变动,或者出于安全的考虑,你不希望它有子类。