这周开始一些基础内容的复习
面相对象的特征有哪些?
封装:把属性和行为结合成一个独立的整体,隐藏内部实现细节,别人只能用我提供的功能,提高安全性
继承:子类继承父类的属性和行为,并且扩展自己的需求,提高代码复用性
多态:不同对象对同一消息做出相应,执行期间判断引用对象的实际类型,根据实际类型调用方法
抽象:问题领域分析,把看上去不同,本质相同的概念归类到一起,用abstract修饰
String, StringBuffer, StringBuilder 区别
String类用final修饰字符数组来保护字符串,不可变
AbstractStringBuilder是StringBuilder,StringBuffer的公共类,定义了各种字符串基本操作(append, insert)
StringBuffer调用方法添加了同步锁,线程安全
StringBuilder没有同步锁
少量操作用String,多线程操作字符串缓冲区用StringBuffer,单线程操作用StringBuilder
例子
class StringTest {
public static void concat1(String s1)
{
s1 = s1 + "test1";
}
public static void concat2(StringBuilder s2)
{
s2.append("test1");
}
public static void concat3(StringBuffer s3)
{
s3.append("test1");
}
public static void main(String[] args)
{
String s1 = "Geeks";
concat1(s1);
System.out.println("String: " + s1);
StringBuilder s2 = new StringBuilder("Geeks");
concat2(s2);
System.out.println("StringBuilder: " + s2);
StringBuffer s3 = new StringBuffer("Geeks");
concat3(s3);
// s3 is changed
System.out.println("StringBuffer: " + s3);
}
}
java的异常列举
Throwable是错误处理的父类,有两个子类:Error,Exception
Error:jvm检测到无法预期的错误,是jvm层次的严重错误,jvm无法执行,不可捕捉,无法恢复,只能显示错误信息
Exception可以捕捉。运行异常:不检查异常,程序选择捕获处理,也可以不处理,java编译器不会检查它,没有try catch, throws也会抛出
常见:NullpointerException(空指针),ClassCastException(类型强制转换),IllegalArgumentException(传递非法参数),ArrayStoreException(向数组存放于生命类型不兼容的对象异常),IndexOutOfBoundsException(下标越界)
非运行异常(编译异常):程序必须处理的,IOException, SQLException等