1 JavaSE异常
程序在执行过程中出现了非正常情况,使得JVM非正常运行。
2 异常处理方式:
(1) 遇到错误就终止程序的运行
(2) 编写代码处理
3 Java异常体系结构
a Throwable 顶层异常类
b Throwable 两个子类
Error 编译时出现
Exception 运行时出现
c 两个常用方法
getMessage() 得到异常基本内容
printStackTrace() 得到异常详细信息
4 常见异常
(1) 栈溢出异常 StackOverflowError
public void testDigui(){ digui(); } public void digui(){ digui(); }
(2) 数组越界异常ArrayIndexOutOfBoundsException
int[] arrs = {1, 2, 3}; arrs[4] = 5;
(3) 空指针异常NullPointerException
Student s = null; s.getName();
(4) 类型转换异常ClassCastException
Object obj = new Object(); String str = (String) obj;
(5) 类型不匹配异常InputMismatchException
Scanner input = new Scanner(System.in); System.out.print("请输入一个整数:"); int num = input.nextInt();
(6) 数学 *** 作异常ArithmeticException
double k = 1/0;
5 运行时异常可以不处理,编译时异常必须处理
6 java异常抛出机制
(1)当前方法如果处理异常,后面调用者直接使用了,如果当前方法不处理异常,由调用者处理
7 异常处理-throw抛出异常
语法: throw new 异常类名称(“参数”);
throw new NullPointerException(“数组为空”);
异常处理-throws声明异常
如果方法出现异常,可以在方法里面进行处理;如果方法里面不进行处理,异常声明出来,由调用者处理
异常处理-try{}catch(){}…catch(){}…捕获异常
异常处理-finally块总被执行,一般在finally中放的是关闭资源的代码
try{}finally{} 或 try{}catch(){}finally{}
8 自定义异常
8.1 异常类如何定义
自定义一个编译期异常: 自定义类 并继承于`java.lang.Exception
自定义一个运行时的异常类:自定义类 并继承于`java.lang.RuntimeException
class RegisterException extends Exception{ } class RegisterException extends RuntimeException{ }
9 字符串
(1)字符串不是基本数据类型,使用双引号"abcd"
(2)String被final继承,不能被改变与继承;
(3)
String s = “abc”;
String s = new String(“abc”);
char[] a = {‘a’,‘b’,‘c’}
String s = new String(a);
10 JVM结构
栈 堆 方法区
JDK1.6之前: 常量池放到方法区
JDK1.7: 常量池放到堆
JDK1.8: 常量池放到元空间(没有方法区)
如果使用String s = "ww"创建对象
在方法区创建对象abc
在栈指向方法区对象
如果使用String s = new String(“ww”)创建对象
首先在方法区创建对象ww
其次在堆创建方法副本ww
方法区对象和堆对象指向同一个数组
栈中指向堆中对象(引用)
==比较的地址,equals()比较的是对象内容,String重写了equals()方法,比较的是String内容
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)