1、String StringBuffer StringBuilder的区别
String是final类,不能被继承重写。对于已存在的String对象,修改它的值,就是重新创建一个对象。
StringBuffer是一个类似于String的字符串缓冲区,使用append()方法修改字符值,使用toString方法转换为字符串,并且是线程安全的。
StringBuilder是非线程安全的,速度更快。跟StringBuffer相同
2、异常处理
Exception、Error是Throwable类的子类
Error类对象由java虚拟机生成并抛出的,不可捕捉
不管有没有异常,try catch finally 其中finally中的代码是一定会执行的
常见的Error OutOfMemoryError
常见的Exception NullPointerException ClassCastException IndexOutOfBoundsException 这几个是常见的非检查性异常
常见的检查性异常 IOException FileNotFoundException
3、内部类总结
非静态内部类无法在外部类的静态方法中实例化。也就是静态只能访问静态。
非静态内部类的方法可以直接访问外部类的所有数据,包括私有的数据。
在静态内部类中调用外部的成员,成员也需要用static修饰,同第一条。
创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器,非静态内部类的对象必须先创建外部类的对象,通过外部类的对象调用内部类的构造器。
4、匿名内部类
匿名内部类不能定义任何静态成员和方法
匿名内部类中的方法不能是抽象的,必须全部实现
匿名内部类必须实现所有父类或者接口的抽象方法
匿名内部类不能定义构造器
匿名内部类访问外部类的成员变量或方法,必须用final修饰
5、多态
父类的引用可以指向子类的对象
创建子类对象时,调用的方法为子类重写的方法,或者继承的方法
如果我们在子类中编写一个独有的方法,父类没有的方法,此时就不能通过父类的引用创建的子类对象来调用该方法。