本文是Java基础知识考查系列的第二篇文章,往期程序员面试必问系列文章链接如下:
感兴趣的同学可以点击关注,或者加入QQ交流群:421062603,一起交流编程学习经验!
下面就进入今天的正题,介绍几个面试中常问的Java基础知识:
1.String、StringBuffer、StringBuilder的区别?
String是字符串常量,带final修饰符,是不可变的。StringBuffer与StringBuilder都是可变的,它俩的区别在于StringBuffer是线程安全的而StringBuilder是非线程安全的。其区别总结如下:
2.运行时异常与一般异常的区别?
3.抽象类(abstract class)与接口(interface)的区别?
一个类可以实现多个接口,但只能继承一个抽象类
接口中只能定义方法而不能有方法的实现,而抽象类可以选择是否实现抽象方法
接口中所有的方法都是抽象的,但抽象类可以拥有非抽象方法
接口中的基本数据类型都是static修饰的,而抽象类不是
接口不能包含静态代码块和静态方法,而抽象类可以
4.sleep()与wait()的区别?
sleep()是线程类Thread的方法,调用sleep(long timemills)时,线程会暂时停止工作timemills毫秒,时间到达后会继续回复线程执行。调用sleep()时,对象锁不会被释放。代码示例:
try{
System.out.println("I'm going to bed");
Thread.sleep(1000);
System.out.println("I wake up");
}catch(IntrruptedException e) {
}
wait()是对象类Object的方法,可以对任意对象调用wait方法,调用wait方法后,调用者的线程会释放该对象锁并被挂起,直到其它线程调用该对象的的notify方法才会被激活。代码示例:
try{
obj.wait();//suspend thread until obj.notify() is called
}catch(InterrputedException e) {
}
希望感兴趣的同学能够帮忙在下方留言讨论,你的支持是我不断前进的动力!