Java中的关键字

abstract

       声明抽象方法和抽象类。包含了抽象方法的一个类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。否则,编译器会向我们报告一条出错消息。

final

       final关键字最一般的意思就是声明“这个东西不能改变”。final关键字的三种应用场合:数据、方法以及类。
       final数据:对于基本数据类型,final会将值变成一个常数;但对于对象句柄,final会将句柄变成一个常数。进行声明时,必须将句柄初始化到一个具体的对象。而且永远不能将句柄变成指向另一个对象。
       final方法:之所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。采用final方法的第二个理由是程序执行的效率。

       final类:如果说整个类都是final(在它的定义前冠以final关键字),就表明自己不希望从这个类继承,或者不允许其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)。

finally

       无论一个异常是否在try块中发生,我们经常都想执行一些特定的代码。对一些特定的操作,经常都会遇到这种情况,但在恢复内存时一般都不需要(因为垃圾收集器会自动照料一切)。为达到这个目的,可在所有异常控制器的末尾使用一个finally从句(C++异常控制未提供finally从句,因为它依赖构建器来达到这种清除效果)。无论是否“掷”出一个异常,finally从句都会执行。

finalize

       假定我们的对象分配了一个“特殊”内存区域,没有使用new。垃圾收集器只知道释放那些由new分配的内存,所以不知道如何释放对象的“特殊”内存。为解决这个问题,Java提供了一个名为finalize()的方法,可为我们的类定义它。在理想情况下,它的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作。

native

       native 修饰符表明方法的实现使用某种“本地”语言编写,例如C 语言,并且开放给Java 程序使用。native 修饰的方法和abstract 修饰的方法一样,没有主体:花括号使用一个分号代替。

       private native void ShowMessage(String msg);

static

       使用static 声明的方法是类方法,关联在类自己身上,而不是类的实例身上。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。

super

       super 的用法之一是,在子类的构造方法中调用超类的构造方法。这种用法和在一个构造方法中使用this() 调用同一个类中的其他构造方法类似。使用super() 调用构造方法和使用this() 调用构造方法有同样的限制:
       (1) 只能在构造方法中像这样使用super();
       (2) 必须在构造方法的第一个语句中调用超类的构造方法,甚至要放在局部变量声明之前。
       传给super() 的实参必须与超类构造方法的形参匹配。如果超类定义了多个构造方法,那么super() 可以调用其中任何一个,具体是哪个,由传入的参数决定。

       调用被覆盖的方法的Java 句法和访问被遮盖的字段的句法十分类似——都使用super 关键字。

synchronized

       synchronized 修饰符的作用是实现线程安全的方法。线程调用synchronized 修饰的方法之前, 必须先为方法所在的类( 针对static 修饰的方法) 或对应的类实例(针对没使用static 修饰的方法)获取一个锁,避免两个线程同时执行该方法。
       Synchronized放在一个方法之前时锁定的是调用这个同步方法的对象。也就是说,当一个对象P1在不同的线程中执行这个同步方法时,它们之间会形成互斥,达到同步的效果。
       Synchronized放在一个区块前面时,当有一个明确的对象作为锁时,就可以这样写程序synchronized (object),但当没有明确的对象作为锁,只是想让一段代码同步时,可以创建一个特殊的instance变量(它得是一个对象[数组对象也可以])来充当锁。
       将synchronized作用于static 函数,表示锁定的是这个类,而不是这个类产生的对象。

       必须保证synchronized后的方法访问的共享数据不在其他方法中被修改,以防其他线程调用其他方法改变数据,否则就不能保证数据的一致性了。

this

       假定我们在一个方法的内部,并希望获得当前对象的句柄。由于那个句柄是由编译器“秘密”传递的,所以没有标识符可用。然而,针对这一目的有个专用的关键字:this。this关键字(注意只能在方法内部使用)可为已调用了其方法的那个对象生成相应的句柄。可象对待其他任何对象句柄一样对待这个句柄。但要注意,假若准备从自己某个类的另一个方法内部调用一个类方法,就不必使用this。只需简单地调用那个方法即可。当前的this句柄会自动应用于其他方法。
       this关键字只能用于那些特殊的类——需明确使用当前对象的句柄。例如,假若您希望将句柄返回给当前对象,那么它经常在return语句中使用。

       注意,实例方法可以使用this 关键字,但类方法不能使用。这是因为类方法不关联在单个对象身上。

volatile

       volatile 修饰符的意思是,字段的值必须始终从主存储器中读取和释放,不能被线程缓存(在寄存器或CPU 缓存中)。应用代码使用字段或变量前,必须重新从主内存读取值。同样,修改使用volatile 修饰的值后,在写入变量之后,必须存回主内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值