Java关键词统一认识下,正视Java基础。
关键词一览表
访问控制类 | private | protected | public | ||||
类、方法和变量修饰符 | abstract | class | interface | implements | extends | final | native |
new | static | strictfp | synchronized | transient | volatile | ||
程序控制语句 | break | case | continue | default | do | else | for |
if | instanceof | return | switch | while | |||
错误处理 | assert | catch | finally | throw | throws | try | |
包相关 | import | package | |||||
基本类型 | boolean | byte | char | double | float | int | long |
short | null | true | false | ||||
变量引用 | super | this | void | ||||
保留关键字 | goto | const |
关键词说明
访问控制类
private
private关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)
具体访问权限如下:
protected
protected关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符
接口的成员变量和成员方法不能声明为protected
public
public关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。
类、方法和变量修饰符
abstract
abstract关键字可以修饰类或方法。
abstract类可以扩展(增加子类),但不能直接实例化。
abstract方法不在声明它的类中实现,但必须在某个子类中重写。
- 采用abstract方法的类本来就是抽象类,并且必须声明为abstract。
- abstract类不能实例化,即不能被new出来。
- 仅当abstract类的子类实现其超类的所有abstract方法时,才能实例化abstract类的子类。这种类称为具体类,以区别于abstract类。
- 如果abstract类的子类没有实现其超类的所有abstract方法,该子类也是abstract类。
- abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写,因此,不能在子类中实现。
class
class关键字用来声明新的Java类,该类是相关变量和/或方法的集合
类是面向对象的程序设计方法的基本构造单位。类通常代表某种实际实体,如几何形状或人。类是对象的模板。每个对象都是类的一个实例。
要使用类,通常使用new操作符将类的对象实例化,然后调用类的方法来访问类的功能。
interface
interface关键字用来声明新的Java接口,接口是方法的集合。
任何类都可声明它实现一个或多个接口,这意味着它实现了在这些接口中所定义的所有方法。
一个类可以实现多个接口。
implements
implements关键字在class声明中使用,以指示所声明的类提供了在implements关键字后面的名称所指定的接口中所声明的所有方法的实现。
一个类可以实现多个接口。
extends
extends关键字用在class或interface声明中,用于指示所声明的类或接口是其名称后跟有extends关键字的类或接口的子类。
一个类只能继承一个其他类。
final
final 类是不能被继承的 这个类就是最终的了 不需要再继承修改 比如很多 java 标准库就是 final 类
final 方法不能被子方法重写
fianl 属性表示常量,final + static 属性表示静态常量
一个类或者方法不能同时是abstract又是final。abstract意味着必须扩展类或方法,final意味着不能扩展类或方法。
一个方法不能同时是abstract又是final。abstract意味着必须重写方法,final意味着不能重写方法。
native
本地,原生方法,该方法是用Java以外的语言实现的
new
new关键字用于创建类的新实例
static
static关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
static表示本属性或方法属于class,并不属于某个这个类对应的实例。
static方法不能访问非static变量,会报错。
strictfp
strictfp的意思是FP-strict,也就是说精确浮点的意思
一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。
因此如果想让浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字。
synchronized
synchronized关键字可以应用于方法或语句块,表示此段代码是同步的。
synchronized关键字可防止代码的关键代码段一次被多个线程执行。是并发编程的基本组成元素之一。
transient
transient关键字可以应用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。
volatile
保证可见性和禁止指令重排序,不能保证原子性。
int i; i++并不是原子操作。long,double占两个slot,所以用volatile修饰可以保证单次原子性。new对象赋值时,用volatile卡可以保证对象不逸出。
程序控制语句
break
用于提前退出for、while或do循环,或者在switch语句中用来结束case块。
break总是退出最内层的while、for、do或switch语句。
case
case块没有隐式结束点。break语句通常在每个case块末尾使用,用于退出switch语句。
如果没有break语句,执行流将进入所有后面的case和/或default块。
continue
continue关键字用来跳转到for、while或do循环的下一个迭代。
continue总是跳到最内层while、for或do语句的下一个迭代。
default
default关键字用来标记switch语句中的默认分支。
在Java 8,default可以指定接口的默认实现方法。
do
do关键字用于指定一个在每次迭代结束时检查其条件的循环。
else
else关键字总是在if-else语句中与if关键字结合使用。else子句是可选的,如果if条件为false,则执行该子句。
for
for关键字用于指定一个在每次迭代结束前检查其条件的循环。
if
if关键字指示有条件地执行代码块。条件的计算结果必须是布尔值。
instanceof
instanceof关键字用来确定对象所属的类。
return
return关键字会导致方法返回到调用它的方法,从而传递与返回方法的返回类型匹配的值。
switch
switch语句用于基于某个表达式选择执行多个代码块中的某一个。
while
while关键字用于指定一个只要条件为真就会重复的循环。.
错误处理
assert
断言表达式是否为真,
语法一:
assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
语法二:
assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。
- 陷阱一:assert关键字需要在运行时候显式开启才能生效,否则你的断言就没有任何意义。
- 陷阱二:用assert代替if。assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,那在测试调试结束后去掉assert关键字就意味着修改了程序的正常的逻辑。
- 陷阱三:assert断言失败将面临程序的退出。这在一个生产环境下的应用是绝不能容忍的。
catch
catch关键字用来在try-catch或try-catch-finally语句中定义异常处理块。
finally
finally关键字用来定义始终在try-catch-finally语句中执行的块。
finally块通常包含清理代码,用在部分执行try块后恢复正常运行。
throw
throw关键字用于在代码中引发异常。
throws
throws关键字可以应用于方法,以便指出方法引发了特定类型的异常。
try
try关键字用于包含可能引发异常的语句块。
包相关
import
import关键字使一个包中的一个或所有类在当前Java源文件中可见。可以不使用完全限定的类名来引用导入的类
package
package关键字指定在Java源文件中声明的类所驻留的Java包。
基本类型
boolean
boolean 是 Java 原始类型。boolean 变量的值可以是 true 或 false。
boolean 变量只能以 true 或 false 作为值。boolean 不能与数字类型相互转换。
包含 boolean 操作数的表达式只能包含 boolean 操作数。
Boolean 类是 boolean 原始类型的包装对象类。
byte
byte 是 Java 原始类型。byte 可存储在 [-128, 127] 范围以内的整数值。
Byte 类是 byte 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。 Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。
char
char 是 Java 原始类型。char 变量可以存储一个 Unicode 字符。
Character 类包含一些可用来处理 char 变量的 static 方法,这些方法包括 isDigit()、isLetter()、isWhitespace() 和 toUpperCase()。
char 值没有符号。
double
double 是 Java 原始类型。double 变量可以存储双精度浮点值。
由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
Java 浮点数值可代表无穷大和 NaN(非数值)。Double 包装对象类用来定义常量 MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。
float
float 是 Java 原始类型。float 变量可以存储单精度浮点值。
使用此关键字时应遵循下列规则:
Java 中的浮点文字始终默认为双精度。要指定单精度文字值,应在数值后加上 f 或 F,如 0.01f。
由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
Java 浮点数值可代表无穷大和 NaN(非数值)。Float 包装对象类用来定义常量 MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。
int
int 是 Java 原始类型。int 变量可以存储 32 位的整数值。
Integer 类是 int 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。
long
long 是 Java 原始类型。long 变量可以存储 64 位的带符号整数。
Long 类是 long 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。
short
short 是 Java 原始类型。short 变量可以存储 16 位带符号的整数。
Short 类是 short 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。
null
将null赋给非原始变量相当于释放该变量先前所引用的对象。
不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。
true
true 关键字表示 boolean 变量的两个合法值中的一个。
false
false 关键字代表 boolean 变量的两个合法值之一。
变量引用
super
super关键字用于引用使用该关键字的类的超类。
作为独立语句出现的super表示调用超类的构造方法。
super.()表示调用超类的方法。只有在如下情况中才需要采用这种用法:要调用在该类中被重写的方法,以便指定应当调用在超类中的该方法。
this
this关键字用于引用当前实例。
当引用可能不明确时,可以使用this关键字来引用当前的实例。
在上面的-示例-中,构造方法参数number与类的成员变量同名。this.number明确表示MyClass的该实例的number成员变量。
void
void可以用作方法的返回类型,以指示该方法不返回值。
保留关键字
goto
关键字,但不能使用
const
是关键字,但不能使用