Number类
Java 语言为每一个内置数据类型提供了对应的包装类。
与数字相关的包装类(Integer、Long、Byte、Double、Float、Short)都是Number类的子类
这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。
Math类
Math 包含了用于执行基本数学运算的属性和方法。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
Character类
Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值。
String类
在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
StringBuffer 和 StringBuilder 类
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
数组
声明数组:
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
创建数组:
arrayRefVar = new dataType[arraySize];
合起来:
dataType[] arrayRefVar = new dataType[arraySize];
finalize方法
它在对象被垃圾收集器析构(回收)之前调用,可以用来在垃圾回收之前做一些最后的清理工作。
读写文件
字符流都是以reader/writer结尾的;
字节流则是以stream结尾的。
异常处理
- 检查性异常:编译时会进行检查。
- 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
- 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
错误Error和异常Exception都是Throwable的子类:
一些常见的运行时异常:
- ArithmeticException:数学运算异常
- ArrayIndexOutOfBoundsException:用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
- ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出该异常。
- IndexOutOfBoundsException:
- NullPointerException:当应用程序试图在需要对象的地方使用 null 时,抛出该异常
捕获异常
Catch 语句包含要捕获异常类型的声明。当try代码块中发生一个异常时,try 后面的 catch 块就会执行。
一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
多重捕获块的语法如下所示:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}
上面的代码段包含了 3 个 catch块。
可以在 try 语句后面添加任意数量的 catch 块。
如果保护代码中发生异常,异常被抛给第一个 catch 块。
如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
如果不匹配,它会被传递给第二个 catch 块。
如此,直到异常被捕获或者通过所有的 catch 块。
throws/throw关键字
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
可以在方法体内使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
public void deposit(double amount) throws RemoteException
{
// Method implementation
throw new RemoteException();
}
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
finally
finally 代码块出现在 catch 代码块最后,用来创建在 try 代码块后面执行的代码块。
无论是否发生异常,finally 代码块中的代码总会被执行。
在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
如果catch中使用了return语句,执行顺序是先执行finally,再执行return语句。