天天看点

Java知识点-Java常用类库与异常的捕获与处理

Java常用类库

String类

String str1 = "hello world!";
String str2 = "hello world!";
Boolean result1 = (str1 == str2);
String str3 = new String("hello world!");
Boolean result2 = (str1 == str3);
           

对于上面的例子,String是一个类,str1就是类的对象,对象名称一定要保存在栈内存之中,字符串"hello world!"一定保存在对内存之中。

如果是使用直接赋值的方式实例化对象,为了节省内存,如果内容已经存在,Java编译器就不会开辟新的内存空间,而是让str2指向已有的内存空间,这样的设计在开发模式上,称为共享设计模式。

只要是new关键字创建的对象,都会在堆内存中另外开辟新的空间

实际上

String str1 = "hello world!";

这条语句创建了两个String对象:一个是在堆内存中的

"hello world!"

字符串对象,另一个是指向这个对象的引用

str1

Math与Random

Math类包含了所有用于几何和三角的浮点运算方法,但是这些方法都是静态的,也就是说Math类不能定义对象

使用的时候直接调用Math的方法

Random类使用时,要先构造一个Random类的对象,然后利用如下方法:

方法名 功能
nextInt(n) 返回一个大于等于0,小于n(不包括n)的随机整数
nextDouble() 返回一个大于等于0,小于1(不包括1)的随机浮点数
Random generator = new Random();
int simuDie = 1 + generator.nextInt(6); // nextInt(6)产生随机整数范围为0~5
           

异常的捕获与处理

Java中一些常见的异常

名称 标识
算术异常: ArithmeticException
空指针异常: NullPointerException
类型强制转换异常: ClassCastException
数组负下标异常: NegativeArrayException
数组下表越界异常: ArrayIndexOutOfBoundsException
违背安全原则异常: SecturityException
文件已结束异常: EOFException
文件未找到异常: FileNotFoundException
字符串转换为数字异常: NumberFormatException
操作数据库异常: SQLException
输入输出异常: IOException
方法未找到异常: NoSuchMethodException
抽象方法错误,当应用试图调用抽象方法时抛出: java.lang.AbstractMethodError
用来指示一个断言失败的问题: java.lang.AssertionError
类循环依赖错误: java.lang.ClassCircularityError
类格式错误: java.lang.ClassFormatError
所有错误的基类,用于标识严重的程序运行问题: java.lang.Error
初始化程序错误: java.lang.ExceptionInInitializerError
违法访问错误: java.lang.IllegalAccessError
不兼容的类变化错误: java.lang.IncompatibleClassChangeError
实例化错误: java.lang.InstantiationError
内部错误: java.langInternalError
连接错误: java.lang.LinkageError
未找到类定义错误: java.lang.NoClassDefFoundError
域不存在错误: java.lang.NoSuchFieldError
方法不存在错误: java.lang.NoSuchMethodError
内存不足错误: java.lang.OutOfMemoryError
堆栈溢出错误: java.lang.StackOverflowError
线程结束: java.lang.ThreadDeath
未知错误: java.lang.UnknownError
未满足的链接错误: java.langUnsatisfiedLinkError
不支持的类版本错误: java.lang.UnsupportedClassVersionError
验证错误: java.lang.VerifyError
虚拟机错误: java.lang.VirtualMechineError
算术条件异常: java.lang.ArithmeticException
数组索引越界异常: java.lang.ArrayIndexOutOfBoundsException
数组存储异常: java.lang.ArrayStoreException
类造型异常: java.lang.ClassCastException
找不到类异常: java.lang.NotFoundException
不支持克隆异常: Java.lang.CloneNotSupportedException
枚举敞亮不存在异常: java.lang.EnumConstantNotPresentException
根异常: java.lang.Exception
违法的访问异常: java.lang.IllegalAccessExcetion
违法的监控状态异常: java.lang.IllegalMonitorStateException
违法的状态异常: java.lang.IllegalStateException
违法的线程状态异常: java.lang.IllegalThreadStateException
索引越界异常: java.lang.IndexOutOfBoundsException
实例化异常: java.lang.InstantiationException
被中止异常: java.lang.InterruptedException
数组大小为负值异常: java.lang.NegativeArraySizeException
属性不存在异常: java.lang.NoSuchFieldException
运行时异常: java.lang.RuntimeException
安全异常: java.lang.SecurityException
类型不存在异常: java.lang.TypeNotPresentException

异常类的处理流程

异常类型最大的父类是Throwable类,其分为两个子类,分别为Exception、Error。Exception表示程序可处理的异常,而Error表示JVM错误,一般无需程序开发人员自己处理

RuntimeException和Exception的区别:RuntimeException类是Exception类的子类,Exception定义的异常必须处理,而RuntimeException定义的异常,可以选择性处理。

throws关键字和throw关键字

throws关键字跟在方法的后面,然后后面跟异常类

访问权限  返回值类型 方法名称(参数列表) throws 异常类{
	// 方法体
}
           

throw关键字可直接抛出异常类的实例化对象

throw 异常类性的实例