Java基础知识篇:
一、关键字解释
1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”。出于对设计或者效率的考虑使用该关键字。
final类无法被继承,final类中的方法也为final。
final方法不能被覆盖,但可以继承
final常量只能被赋值一次,不可改变,在声明时可以不赋值,但之后只能赋值一次。
final不能修饰构造方法, 编译器调用final方法时会转入内嵌机制,大大提高效率
通常private的方法默认是final类型的。
2. static:“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,静态内部类,静态导包
静态变量和方法:与类一起被加载,不依赖类对象
静态代码块:与类一起被加载
静态导包: 静态导入包是JDK1.5中的新特性,用import static代替import,导入类中的一个或者全部静态方法,然后可以省略全路径直接使用静态方法。
静态内部类
static 和fainal 同时修饰变量,则该变量称为 ”全局常量“
3.abstract
abstract关键字可以修饰类或方法。
abstract类可以扩展(增加子类),但不能直接实例化。
abstract方法不在声明它的类中实现,但必须在某个子类中重写。
-注释-
采用abstract方法的类本来就是抽象类,并且必须声明为abstract。
abstract类不能实例化。
仅当abstract类的子类实现其超类的所有abstract方法时,才能实例化abstract类的子类。这种类称为具体类,以区别于abstract类。
如果abstract类的子类没有实现其超类的所有abstract方法,该子类也是abstract类。
abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写,因此,不能在子类中实现。
final类的方法都不能是abstract,因为final类不能有子类。
4. byte byte可存储在[-128,127]范围以内的整数值。
特别说明的:C#中byte的范围是【0,255】,如果C#和java混合编程的时候需要注意byte的转换
5. char char变量可以存储一个Unicode字符。
特别说明的:C#中的char是8bits,和byte是可以直接相互转换,但是java中的char是16bit,不能和byte直接转换
6. synchronized 应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护
-注释-
synchronized关键字可防止代码的关键代码段一次被多个线程执行。
如果应用于静态方法(如上例中的MySyncStaticMethod),那么,当该方法一次由一个线程执行时,整个类将被锁定。
如果应用于实例方法(如上例中的MySyncMethod),那么,当该方法一次由一个线程访问时,该实例将被锁定。
如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。
9. strictfp
strictfp 即 strict float point (精确浮点), 关键字可应用于类、接口或方法。使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.
关键字总览
关键字 | 含义 |
abstract | 表明类或者成员方法具有抽象属性 |
assert | 用来进行程序调试 |
boolean | 基本数据类型之一,布尔类型 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case |
用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
null | 用来标识一个不确定的对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile |
表明两个或者多个变量必须同步地发生变化 |
while |
用在循环结构中 |