文章目录
- 什么是关键字?
- 数据类型(10个)
- byte、char、boolean、short、int、float、long、double、void、enum
- 流程控制(12个)
- if、else、do、while、for 、switch、case、assert
- break(跳出循环)
- continue (中断本次循环,继续下一次)
- return (返回或者退出)
- instanceof(判断右类是不是左对象所属类的直接父类、间接父类、左对象所属类)
- 异常处理(5个)
- try、catch、finally、throw、throws
- 访问控制(4个)
- public(访问控制修饰词,公开)
- protected(访问控制修饰词,受保护的)
- default(访问控制修饰词,默认)
- private(访问控制修饰词,私有)
- 修饰方法、类、属性和变量(9个)
- static(Java修饰符,用于表示静态)
- final(Java修饰符,用于表示不可改变、不可继承)
- super(表示访问父类中属性和方法)
- this(在类中使用this表示特殊作用)
- native(本地方法)
- synchronized(同步)
- volatile(同步机制)
- strictfp(精确浮点)
- transient(透明的)
- 定义类、接口、抽象类、实现接口、继承类、实例化对象(6个)
- class(类的关键字)
- insterface(接口的关键字)
- abstract(表示抽象)
- extends (继承)
- implements(实现)
- new(创建对象)
- 包相关(2个)
- import(引入包的关键字)
- package(定义包的关键字)
- 保留字(2个)
- goto(跳转)
- const(静态)
什么是关键字?
- Java语言中预定义的、有特殊意义的标识符,它对于Java编译器有特殊意义,用户只能按照系统规定的方式使用,不能重新定义。
- Java中所有关键字都是小写的。
- Java关键字共50个。
数据类型(10个)
byte、char、boolean、short、int、float、long、double、void、enum
流程控制(12个)
if、else、do、while、for 、switch、case、assert
break(跳出循环)
- break主要用于在循环语句或者switch语句中,用来强行跳出整个语句块,不继续执行循环中剩余的语句。
- break跳出最里层的循环,若外层还有循环,外层循环继续执行。
continue (中断本次循环,继续下一次)
- continue适用于任何循环控制结构中,作用是让程序立刻跳转到下一次循环的迭代中。
return (返回或者退出)
- return 从当前方法中退出,返回到该调用的方法的语句出,然后继续执行后面代码。此时return后面不带参数。
- return返回一个返回值给调用方法的语句,返回值的数据类型必须和方法声明中的返回值类型一致。
instanceof(判断右类是不是左对象所属类的直接父类、间接父类、左对象所属类)
使用总结:
- 父类引用可以指向子类对象,子类引用不能指向父类对象,例如:Person p = new Student(),Strdent s ≠ new Person();
- 把子类对象直接赋给父类引用叫做向上转型(upcasting),向上转型不用强制转换,例如:Person p = new Student(),这里其实就是多态。
- 把父类对象赋给子类引用交向下转型(downcasting),需要强制转换,例如:Student s = (Student) new Person();
- upcasting会失去子类特有的方法,但是子类重写的防范,依然有效。
异常处理(5个)
try、catch、finally、throw、throws
访问控制(4个)
public(访问控制修饰词,公开)
对所有类可见,使用对象:类、接口、变量、方法。
protected(访问控制修饰词,受保护的)
对统一包内的类和所有子类可见,使用对象:变量、方法。注意:不能修饰类(外部类)。
default(访问控制修饰词,默认)
在同一包内可见,不用使用任务修饰符。使用对象:类、接口、变量、方法。
private(访问控制修饰词,私有)
在同一类内可见,使用对象:变量、方法。注意:不能修饰类(外部类)。
修饰方法、类、属性和变量(9个)
static(Java修饰符,用于表示静态)
- 静态变量
- 静态变量和非静态变量的区别就是:静态变量属于类,被所有实例所共享,可以使用类名进行访问;非静态变量对于类的每个实例都有一份,必须使用实例对象进行访问。
- 静态变量在类加载的过程中就分配内存,实例变量在对象创建时分配内存。
- 静态方法
- 静态方法和非静态方法的区别就是:静态方法数据类,别所有实例共享,可以使用类名进行调用;非静态方法对于类的每个实例都有一份,必须使用实例对象进行调用。
- 静态方法不能直接访问类中的非静态变量和非静态方法(静态方法在类加载阶段初始化),可以直接访问类中的静态变量和静态方法。
- this和super在类中属于非静态的变量、方法调用。
- 非静态方法可以直接访问类中的非静态变量和非静态方法,也可以直接访问类中的静态变量和静态方法。
- static代码块
- 代码块的执行:静态代码块是在类加载完成之后就会自动执行,匿名代码块是在创建对象的时候自动执行的,执行在构造器执行之前。
- 执行优先级:没有涉及继承时候:静态成员变量赋值(类加载)>静态代码块>变量赋值>构造代码块>构造方法;涉及继承时候:Father静态变量赋值、Son静态变量赋值(类加载阶段)>Father静态代码块、Son静态代码块>Father变量赋值、Son变量赋值>Father的构造代码块、Father的构造方法>Son的构造代码块、Son的构造方法。
final(Java修饰符,用于表示不可改变、不可继承)
- 修饰类:用final修饰的类不能被继承,没有子类,例如:java.lang.String。
- 修饰方法:用final修饰的方法可以被继承,但是不能被子类重写,例如:java.lang.Object.getClass方法。
- 3.修饰变量:用final修饰的变量表示常量,只能被赋值一次。
super(表示访问父类中属性和方法)
super只能出现在子类的方法或者构造方法中,super的作用
- 访问父类中的属性,例如:String s = super.name;
- 调用父类中的方法,例如:super.print();
- 调用父类中的类构造器,super语句一定出现在子类构造其的第一行代码。
- super和this不能同时调用构造方法(this和super均需要在构造方法的第一行代码)。
this(在类中使用this表示特殊作用)
- 在类中的作用:
- 区别成员变量和局部变量。
- 调用类中其它方法。
- 调用其它构造器,只能在使用在调用这构造器的第一句。
- 在类中的含义:
- 表示当前类将来创建出的对象。
- this和super的区别:
- 代表的事务不一样,this代表所属方法的调用者对象,super代表父类对象的引用空间。
- 使用前提不一样,this在非继承的条件下也可以使用,super只能在继承的条件下使用。
- 调用构造方法不一样,this调用本类的构造方法,super调用父类的构造方法。
native(本地方法)
用来修饰方法,表示当前方法是Java的本地方法。
synchronized(同步)
- synchronized 关键字用于给个对象(new 对象或者Calss类对象)加锁。
- synchronized修饰代码块的时候,括号内可以选择一个对象为锁对象(可以是一般对象,也可以是class对象)。
- synchronized修饰一般方法时候,锁对象为this,也就是该类的new出来的对象。
- synchronized修饰static方法时候,锁对象为该类Class对象。
volatile(同步机制)
同一时间只有一个线程可以访问volatile变量,保证线程安全
strictfp(精确浮点)
使得浮点运算更加精确,符合IEEE-754规范的
transient(透明的)
-
transient用处?
主要作用是让某些被transient修饰的成员变量不被序列化,比如密码信息等,用以防止这些信息序列化后在网络中传输,造成数据安全问题 -
transient注意事项?
transient是能修饰成员变量,不能修饰类和方法。
transient不能修饰本地变量和静态变量(static)。
如果对transient修饰的变量进行续流恶化,会对变量重新进行默认初始化(反序列化之后的对象会变为null)
定义类、接口、抽象类、实现接口、继承类、实例化对象(6个)
class(类的关键字)
定义类的关键字。
insterface(接口的关键字)
定义接口的关键字。
abstract(表示抽象)
- 定义
abstract修饰符可以用来修饰方法也可以修饰类,修饰的方法称为抽象方法,修饰的类是抽象类。 - 抽象类和抽象方法的关系
抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类。 - 语法
public abstract class AbstractDemo {
// 抽象方法,abstract修饰且以(); 结束
public abstract void doSomething();
// 一般方法,必须有方法体
Object getSomething(){
return null;
};
}
- 特点和作用
- 抽象类不能使用new关键字来创建对象,它是用来让子类继承的,
- 抽象方法只有方法的声明,没有方法的实现,具体实现让其子类来实现的。
- 子类继承抽象类后,需要实现抽象类中抽象方法,否者这个子类也需要声明为抽象类。
- 抽象类虽然不能new对象,但是作为类是有构造器的,会在其子类实例化对象的时候调用。
- 抽象类和抽象方法在程序中起到一个框架的作用,提高程序的可扩展性。
extends (继承)
用于子类的申明,用来继承父类。
implements(实现)
用于接口子类的申明,用来实现父接口。
new(创建对象)
创建对象关键字
包相关(2个)
import(引入包的关键字)
代码中引入其它类对象。例如:import java.io.IOException。
package(定义包的关键字)
包关键字,用来显示当前代码所属于什么包下。例如:package com.xxliao.io.copy。
保留字(2个)
保留字(Reserve Word):保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
goto(跳转)
无任何作用,Java 不允许 goto 跳转。
const(静态)
类型修饰符,使用const声明的对象不能更新。