文章目录
1. 简化版
关键字 | 含义 | 关键词 | 含义 |
---|---|---|---|
abstract | 表明类或成员方法具有抽象的属性 | assert | 断言,用于程序调试 |
boolean | 基本数据类型之一,布尔类型 | break | 用于跳出当前块,例如循环的跳出 |
byte | 基本数据类型之一,字节类型 | case | 用于switch语句中,表示其中的一个分支情况 |
catch | 用于异常处理,用来捕获异常 | char | 基本数据类型之一,字符类型 |
class | 声明一个类 | const | 两个保留字之一,表示以后可能会用到 |
continue | 循环中使用,表示越过当前循环体的剩余部分,立刻跳到循环体首部 | default | 默认,例如,switch语句中,表示一个默认的分支 |
do | 用于do-while循环中,后带循环的条件 | double | 基本数据类型之一,双精度浮点类型 |
else | if-else条件语句中,表示条件不成立时的分支 | enum | 枚举类型 |
extends | 继承,表示一个类继承于另外一个类 | false | boolean类型的取值,表示错误 |
final | 表示不可修改,第二部分细讲 | finally | 用于异常处理,声明异常处理流程中一定会执行的语句块 |
float | 基本数据类型之一,单精度浮点类型 | for | 循环的引导词 |
goto | 两个保留字之一,表示以后可能会用到 | if | if-else条件语句中,表示条件成立时的分支 |
implements | 表示一个类实现了给定的接口 | import | 表示导入指定的类或包 |
instanceof | 用于测试一个对象是否是指定对象的实例对象 | int | 基本数据类型之一,整数类型 |
interface | 声明一个接口 | long | 基本数据类型之一,长整数类型 |
package | 包 | public | 表示访问控制方式:公有模式 |
private | 表示访问控制方式:私有模式 | protected | 表示访问控制方式:保护模式 |
native | 用于修饰方法,表示该方法由其他语言实现 | new | 用来创建新实例对象 |
null | 空值 | return | 表示从成员方法中返回 |
short | 基本数据类型之一,短整数类型 | super | 表示当前对象的父类型的引用或父类型构造方法 |
static | 表明具有静态属性 | strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
switch | 分支语句结构的引导词 | synchronzed | 表明一段代码同步执行 |
this | 指向当前实例对象的引用 | throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 | transient | 声明不用序列化的成员域 |
true | boolean类型的取值,表示正确 | try | |
void | 声明当前成员方法没有返回值 | volatile | 表明线程在每次使用变量的时候,都会读取变量修改后的最的值 |
while | 循环结构 |
2. 详解版
2.1. 数据类型
对于数据类型,没有什么好说的,包括:
- 8个基本数据类型:float,double,byte,short,int,long,boolean,char
- 其他相关的:null,void,true,false
- enum
最后一个为枚举类型,作用为:用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型,具体格式举例:
public enum Color {
RED, GREEN, BLANK, YELLOW
}
看到一篇比较详细的博客,关于枚举类型的7种常见用法:
https://blog.youkuaiyun.com/qq_27093465/article/details/52180865
2.2. 与包相关
- package:表示包
- import:导入包
关于导包,有一个小的注意点:如果我们现在要在permutation中导入blog.aa.Hello类:
导入的语句:
或者也可以用:
但不能用下面的语句:因为这个语句的意思是,blog的下一级包中的所有类,不包含blog包中里面的包里的类。这样子做的目的是为了区分:如果blog中有一个hello类,blog.aa包中也有一个hello类,通过这个规则,就可以准确的区别用户导入的具体是什么包
2.3. 访问修饰符的关键字
- public,protected,private
2.4. 流程控制(循环、条件)
- 循环:do,while,for,continue,break
- 条件:if,else,switch,case,default
- return
2.5. 错误处理
- try,catch,finally,throw,throws
- finally:只用于 try/catch 语句中,表示这段语句最终一定被执行
- throw 和 throws 的区别:
- throw 是语句抛出一个异常;throws 是方法抛出一个异常
- throw语句用在方法体内,表示抛出异常,由方法体内的语句处理,throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理
2.6. 保留字
- const
- goto
- 对于保留字,就是当前没有意义,但以后可能会使用,防止后面修改为关键字后,代码已经使用了这些关键字作为变量,所以先设为保留字,防止被使用
2.7. 类相关
- class,interface,abstract,extends,new,implements
- this,super
- this:
- 引用隐式参数
- 调用该类其他的构造器
- super:
- 调用超类的方法
- 调用超类的构造器
- this:
- static:主要有4种使用情况:成员变量、成员方法、代码块、内部类
- 成员变量:static 关键字修饰的成员变量,起到全局变量的作用,在内存中只有一个复制(所有实例都指向同一个内存地址),只要静态变量所在的类被加载,这个静态变量就会被分配空间。注意:Java语言中,不能在方法体中定义static变量。
- 成员方法:static 方法中不能使用 this 和 super 关键字,不能调用非 static 方法,只能访问所属类的静态成员变量和成员方法。原因:调用这个方法的时候,可能这个类的对象还没有创建,例如:
Math.max(a, b);
此时,并没有创建Math实例 - 代码块:静态代码块在类中独立于成员变量和成员函数的代码块,不在任何一个方法体中,JVM加载类时会执行 static 代码块。
- 内部类:可以不依赖于外部类实例对象而被实例化的类。
- instanceof:一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边是否是它右边的类的实例
public class Test {
public static void main(String args[]) {
String s = "Hello";
if (s instanceof String) {
System.out.println("true");
}
if (s instanceof Object) {
System.out.println("true");
}
}
}
- final:用于声明属性、方法和类,分别表示,属性不可变,方法不可覆盖,类不可被继承,注意,这里属性不可变,对于引用类型,这里指引用不可变,并非是对象不可变。举例:
public static void main(String[] args) {
final StringBuilder sb = new StringBuilder("hello");
sb.append(" java");
System.out.println(sb.toString());
}
上面这段代码是可以顺利执行的,final指的是引用的不可变性,即它只能指向初始时指向的那个对象,而不关心指向对象内容的变化。例如上面例子中,指向的对象内容变化,但依旧可以顺利执行。
而当我们修改它的指向时,就会报错:
2.8. 线程
- synchronized:表示指定的方法or代码块需要同步执行
- volatile:对于共享的数据,为了提高效率 ,线程有自己的一份数据,但不一定是罪行的数据,volatile 修饰的对象使用时,必须去读取主存,将数值更新为最新值
2.9. 断言
- assert
- 断言提供了一种在代码中进行正确性检查的机制。它的作用是对一个 boolean 表达式进行检查,一个正确运行的程序必须保证这个 boolean 表达式的值为 true,若 boolean 表达式的值为 false,则说明程序已经处于一种不正确的状态下,系统需要提供告警信息并且退出程序。
2.10. transient
- transient 用于序列化操作中,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
2.11. native
- native关键词修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在其他语言中实现的,这个关键主要跟 JNI技术相结合使用,这里附上一个关于JNI的demo的链接:https://blog.youkuaiyun.com/Applying/article/details/81572167
2.12. strictfp
- strictfp 是 strict float point 的缩写,指的是精确浮点,用来确保浮点数运算的准确性。strictfp 可以用来修饰类、接口或者方法。
private static strictfp void count() {
float f = 0.123f;
double d = 0.356;
System.out.println(f + d);
}
// 这里,输出的结果为: 0.47900000339746474