注: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.new1.用于创建类的新实例,例Object obj = new Object();
2.new关键字后面必须是类名加构造方法参数(带括号)
3.=左侧的类型必须要与实例化的类或接口有赋值兼容关系
5.2.this用于引用当前实例,当引用可能不明确,这时最好用this代表
5.3.super1.代表引用super关键字的类的超类
2.代表了父类空间的引用
3.子类中访问同名的属性或方法时,默认用的是子类的属性或方法,若要用父类的方法可用super.接方法(属性)进行调用
5.4.instanceof instanceof 严格来说是 Java 中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:boolean result = obj instanceof Class其中 obj 为一个对象, Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或 间接子类,或者是其接口的实现类,结果result 都返回 true ,否则返回 false 。 6.类之间关系的关键字
■extends
在类的声明中,通过extends来继承一个类,注意Java最多只能继承一个类
public class Dog extends Animal{ 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很重要,建议线程方面加强学习,日后工作开发中线程安全是很重要的问题,这里只大致叙述以对付无聊的面试官,希望对你们有所帮助.....
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)