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的方法
Math.abs(3.14);
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 异常类性的实例