1.常用关键字汇总
访问权限修饰符 | Public | default(并无该修饰符,默认啥也不写) | protected | private | |
---|---|---|---|---|---|
异常处理关键词 | try | catch | finallly | throw | throws |
包的关键词 | package | import | |||
有关实例的关键词 | new | this | super | instanceof | |
类之间关系的关键词 | implements | extends | |||
定义类,函数,变量的关键词 | abstract | final | static | synchronized |
2.访问权限修饰符
修饰符 | 当前类 | 同包 | 子类 | 其他包 |
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default(默认,不写) | Y | Y | N | N |
private | Y | N | N | N |
注:Y(可以),N(不可以)
无需文字多言,只需记住上图规律,用时想图即可
3.异常处理关键字
3.1.异常简记
程序从编写代码到上线运行,分为编辑阶段和运行阶段,在每个阶段中都可能会出现一些问题,称为异常
异常根据软硬件的区分又分为错误【error】和异常【exception】,异常体系最大的类Throwable,一般error不是程序员考虑的问题,我们需要考虑的是exception
3.2.异常的处理方案(简单理解)
3.2.1.自己处理(代码编写者处理)
try&catch&finally
单个异常处理:
try{
//可能出现问题的代码
int a = 1/0;
} catch(ArithmeticException exception){
//处理方案
exception.printStackTrace();
}
System.out.println("--over--");
多个异常处理:
多catch处理:
try{
print(null);
//可能出现问题的代码
int a = 1/0;
} catch(ArithmeticException exception){
//处理方案
exception.printStackTrace();
} catch(NullPointerException exception){
exception.printStackTrace();
}
System.out.println("--over--");
直接catch(更大范围的异常):
try{
print(null);
//可能出现问题的代码
int a = 1/0;
}catch(Exception exception){
exception.printStackTrace();
}
finally 关键字可加可不加,如果有需求(无论结果如何,某段代码最后得实现)
try{
print(null);
//可能出现问题的代码
int a = 1/0;
}catch(Exception exception){
exception.printStackTrace();
}finally{
System.out.println("I hate BUG!!!");
}
3.2.2.谁用谁处理(调用者处理)
throw,throws
■throw 抛出异常
■throws 声明异常
注:如果该方法中有多个异常需要抛出,在声明的时候使用逗号隔开
public void print(int[] arr,int index) throws NullPointerException,ArrayIndexOutofBoundsException {
if(arr == null){
throw new NullPointerException();
}
if(index >= arr.length){
throw new ArrayIndexOutofBoundsException();
}
}
疑问???
什么时候应该捕获,什么时候需要抛出?
简单理解:由于调用者导致的问题,应该抛出去,如果是方法本身就存在的问题,那应该捕获
4.包的关键字(了解)
■package(包):
1、标注某个类的来源(简单理解)
2、package 语句(如果出现)必须是 Java 源文件中的第一个非注释性文本。
■import(引入):
1、若有多个工程多个项目,有重复的类名,虽说影响可能性不大但是有不确定性,用import来避免不确定性
2、import 关键字使一个包中的一个或所有类在当前 Java 源文件中可见
5.有关实例的关键字
■new:创建实例(简单理解)
■this:代指当前对象(简单理解)
■super:代指父类对象(简单理解)
■instanceof:判断该实例是否是该类型,返回boolean类型(简单理解)
5.1.new
1.用于创建类的新实例,例Object obj = new Object();
2.new关键字后面必须是类名加构造方法参数(带括号)
3.=左侧的类型必须要与实例化的类或接口有赋值兼容关系
5.2.this
用于引用当前实例,当引用可能不明确,这时最好用this代表
5.3.super
1.代表引用super关键字的类的超类
2.代表了父类空间的引用
3.子类中访问同名的属性或方法时,默认用的是子类的属性或方法,若要用父类的方法可用super.接方法(属性)进行调用
5.4.instanceof
boolean result = obj instanceof Class
6.类之间关系的关键字
■extends
在类的声明中,通过extends来继承一个类,注意Java最多只能继承一个类
public class Dog extends Animal{
/**
* dog的特有功能:看门
*/
public void lookDoor() {
System.out.println(getName()+"看门有一手");
}
}
■implements
实现接口, 接口的方法一般为空的, 必须重写才能使用,implements可以实现多个接口,声明实现接口时要将多个接口以逗号隔开
public class Computer implements IUsb,XXX{
@Override
public void joinMouse(){
System.out.println("接入一个牧马人鼠标");
}
@Override
public void joinKeyBoard(){
System.out.println("接入一个青轴键盘");
}
}
7.定义类,函数,变量的关键字
■abstract(抽象,简单了解)
1.被修饰的类为抽象类,抽象类不可实例化,可以通过方法的覆盖来实现多态的属性,抽象类将事物的共性的东西提取出来,由子类继承去实现,代码易扩展、易维护
2.被修饰的方法为抽象方法,没有默认实现(实体),抽象方法不能用private修饰,因为抽象方法必须被子类实现(覆写),而private权限对于子类来 说是不能访问的,所以就会产生矛盾
3.需注意,采用 abstract方法的类本来就是抽象类,并且必须声明为abstract
■final(最终)
1.对于一个final变量,若是基本数据类型,其数值初始化后不可变;若是引用类型,初始化后不可再指向另一个对象
2.final修饰的类,表明该类不可被继承,且该类中的所有成员方法都会被隐式地指定为final方法
3.使用final类的原因有两个,一是把方法锁定,以防任何类继承;第二个是效率(早期java会将final方法转为内嵌调用,先版本已经不需要这些优化)---记着无用,但是面试时候会显得更牛x些
■static(静态,简单记)
1.static可以用在成员变量,代码块,内部类及成员方法
2.static方法不属于对象,可以用类名直接调用,被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享
3.静态代码块随着类的加载而执行,只执行一次,用处不多,例需要统计一下类加载时候的日志信息,就可以将这部分代码语句写在static静态代码块里面
4.)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变,在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
5.static(内部)类可以被其他类实例化和引用(即使它是顶级类)
■synchronized(线程、同步)
1.用于需要用到同步的方法或语句块,保证线程安全
2.synchronized关键字防止被选中的代码的线程安全
3.用于实例方法(静态方法),执行时该实例(类)将被锁定
注:synchronized很重要,建议线程方面加强学习,日后工作开发中线程安全是很重要的问题,这里只大致叙述以对付无聊的面试官,希望对你们有所帮助.....