Java面试题之三 (转)

11、谈谈final,finally,finalize的区别? java

1.final:是修饰符,是一个关键字。修饰变量,若是是基本类型表示该变量的值不能修改;若是是引用类型表示该变量不能指向别的对象;修饰类,表示该类不能被继承;修饰方法,表示该方法不能被重写。 数据库

2. finally:是在try-catch-finally块中配套使用。通常用于资源清理工做:流的关闭,以及数据库的关闭等。 编程

3. finalize:是Object的方法,是GC运行机制的一部分。没有特别要求的话,通常不须要咱们调用该方法,交给GC本身管理就好。Java中容许使用 finalize()方法在垃圾收集器将对象从内存中清除出去以前作必要的清理工做,但其具体执行时间点是没法肯定的。子类能够覆盖finalize()方法以整理系统资源或者执行其余清理工做。 安全

12、error和exception有什么区别? 多线程

相同点:Error类和Exception类都继承Throwable类。 编程语言

不一样点ui

1.Error表示系统级错误和或低层资源的错误。是java运行环境中的内部错误或者硬件问题,好比,内存资源不足等。这种问题不可能期望经过程序能处理。 spa

2.Exception表示须要捕捉或者须要程序进行处理的异常,它是因为程序设计有问题而产生的,能够经过程序来解决。包括编译时异常(必须捕获)和运行时异常(能够不捕获)。 线程

十3、当一个对象被看成参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里究竟是值传递仍是引用传递? 设计

是值传递。Java编程语言中只有值传递没有引用传递的说法。当一个对象实例做为一个参数被传递到方法中时,这个参数的值就是该对象的引用(该对象的地址)。对象的内容能够在被调用的方法中改变,但对象的引用即地址是永远不会改变的。

十4、做用域public,private,protected,以及不写时的区别

对于这个题,只要看懂这个图就没问题了。

做用域 当前类 同包 不一样包子孙类 其余包
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly

十5、33.String 和StringBuffer有什么差异?在什么状况下使用它们?

区别

1.String是字符串常量,一旦建立就不能修改,每次对String操做都是产生一个新的字符串对象;

2.StringBuffer和StringBuilder是字符串可变量,能够修改,操做的始终是原对象。可是StringBuffer是线程安全的(效率低),StringBuilder是线程不安全的(效率高)。

选择:若是不多修改,使用String,毕竟它最简单; 若是常常修改,且是单线程,使用StringBuilder(最经常使用); 若是常常修改,且是多线程,使用StringBuffer。

相关文章
相关标签/搜索