18:StringBuffer和StringBuilder的区别
StringBuilder和String对象都可以很方便的处理字符串,他们具备各自的特点,如下:
String具有以下五个特点:
1.String是引用类型,在堆上分配内存。
2.String对象一旦生成,就不可改变(Immutable)。
3.String提供了大量便捷的字符串操作函数。
4.String运算时会产生一个新的实例。
5.在程序中定义相等运算符(==)和(!=),可以方便比较String对象的值(而不是引用)。
StringBuilder具有以下两个特点:
StringBuilder对象是动态对象,允许扩充它所封装的字符串中的字符数量。
StringBuilder可以用于修改StringBuilder中的内容。
由于String对象一旦声称,就不可改变,所以每次使用System.String类中的方法时,
都需要在内存中创建一个新的字符串对象,这会分配新的空间给新的对象。
如果对字符串执行重复修改,创建一个新的String对象导致 的系统开销可能会非常昂贵。
如果不创建新的对象,只是修改字符窜,则可以使用StringBuilder类。
StringBuilder类型可以很好的解决字符串操作的性能问题,在它声称String对象之前,
将不会产生任何String对象。
StringBuffer是同步的,线程安全的
StringBuilder是不同步的,线程非安全的,执行速度快
--------------------------------------------------------------
20:If 和 switch有什么区别,以及在什么时候使用Switch
if:能判断具体的值,区间和boolean类型表达式,
switch:只能对具体的值进行判断,值的个数是确定的,byte,short,int,char。
if判断是遍历性的,代码执行效率是不高的。
而switch...case会生成一个跳转表来指示实际的case分支的地址,
而这个跳转表的索引号与switch变量的值是相等的。
在确切知道条件结果,并且结果有限下的条件下可以使用switch,如枚举
在不能确切表示结果的情况下,或者处理复杂的逻辑关系最好用if...else,
在使用switch时候一定要注意break的使用。
switch语句特点:
1、switch语句选择的类型只有四种:byte,short,int,char。
2、case与default没有顺序。先执行第一个case,没有匹配的case执行default。
3、结束switch语句的两种情况:①遇到break,②执行到switch语句结束。
4、如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
5、进入switch语句后,执行顺序是先执行case,然后从上到下,最后再执行default。即使default放在case上面,执行顺序也不变。
--------------------------------------------------------------
21:内省的作用
InstroSpector-->JavaBean-->特殊的Java类
内省(Introspector)是Java 语言对Bean类属性、事件的一种缺省处理方法。
例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。
通过 getName/setName 来访问 name 属性,这就是默认的规则。
--------------------------------------------------------------
22:讲一讲异常体系以及异常的处理原则。异常和错误的不同?final、finally、finanlize()的区别、编程中遇到过异常吗,都遇到了哪些异常,请你简述一下你遇到的异常以及解决方案。throw和throws的区别
throwable类中主要有Exception和error两大子类,erro是不可处理的严重异常
Exception中RuntimeException是运行异常,如角标越界,空指针异常是代码出问题
必须进行处理,否则运行出错
另一类是编译异常,编译时eclipse会提醒捕获或者抛出
final是修饰符,被final声明的变量是常量,不能修改只能读取,修饰方法不能被继承
finally异常处理时提供 finally 块来执行任何清除操作,如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(一定会执行的语句)。
finalize是方法名,finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作
在Object中定义,子类覆盖他可以整理系统资源和其他清理工作。
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
throw和throws的区别:
throws针对那些没有权限处理的异常进行抛出,在方法和类上抛出的是异常类名,可抛多个
throw 是在方法内抛出的异常对象 |
|