java 关键字

数据类型 类关键字 boolean ,byte,char,double enum float int long,short,void,class,interface package
程序控制逻辑结构 类关键字 do for while if else continue break goto switch case default return
权限控制 类关键字 public private protected
类描述 类关键字 abstract,static ,final ,const native strictfp transient
类控制 类关键字 new extends implements import instanceof this super
测试用 assert
异常 try finally catch throw throws
线程安全 synchronized ,volatile

被static修饰的成员变量和成员方法独立于该类的任何对象
final类
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
用final修饰的成员变量表示常量,值一旦给定就无法改变
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值

throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常
throws是方法可能抛出异常的声明

throw与throws的比较
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

finally:

程序在try里打开了一些物理资源(如数据库连接、网络连接等),这些物理资源必须显示回收。因为java的垃圾回收机制不会回收任何物理资源,只能回收 堆内存中对象所占用的内存。为了保证一定能回收try中打开的物理资源,异常处理机制提供了finally块,不管是否出现异常,finally块总会被 执行。异常处理语法结构:只有try块是必须的,catch和finally是可选的,但至少出现其中之一,catch可有多个。
以下情形,finally将不会被执行
① finally块中发生异常
② 程序所在线程死亡
③ 在前面的代码中用了System.exit()
④ 关闭cpu

注意:一旦finally中使用了return或throw语句,将会导致try块、catch块中的return、throw语句失效。
当java程序执行try块、catch块时遇到了return或throw语句,这两个语句会导致方法立即结束,所以系统并不会立即执行者两个语句,
而是去寻找是否有finally块,如果没有,程序立即执行return或throw语句,方法终止;如果有finally,系统立即执行finall
块,只有当finally块执行完成后系统才跳回来执行try、Catch块里的return、throw,如果finally里也使用了return或
throw等导致方法终止的语句,则finally块已经终止了方法,系统将不会跳回执行try、catch块里的任何代码。

\ Abstract class Interface
实例化 不能 不能
类 Java中单继承 一个类可以实现多个接口
数据成员 可有自己的 静态的不能被修改即必须是static final
方法 可以私有的、非abstract方法、 不可有私有的、静态的,默认是public,
静态方法,方法必须有实现 abstract 类型,不需要实现
变量 可有私有的,默认是friendly 型, 不可有私有的,默认是public static final 型
其值可以在子类中重新定义, 且必须给其初值,实现类中
也可以重新赋值 不能重新定义,不能改变其值

设计理念 表示的是“is-a”关系 表示的是“like-a”关系
实现 要用extends继承 要用implements实现
构造方法 可以有 不可以有

如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作
(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量
就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的
内存中而不会写到磁盘里持久化。

native关键字用法native是与C++联合开发的时候用的!java自己开发不用的!
使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的

strictfp, 即 strict float point (精确浮点)。

  strictfp关键字可应用于类、接口或方法。使用 strictfp关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。

  如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.