- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java面试题及答案
一、Java基础
说说Java中的基本数据类型有哪些,以及对应的包装类?
答案:Java基本数据类型有8种,分别是byte(字节型,占1字节)、short(短整型,占2字节)、int(整型,占4字节)、long(长整型,占8字节)、float(单精度浮点型,占4字节)、double(双精度浮点型,占8字节)、char(字符型,占2字节)、boolean(布尔型,占1字节或4字节,取决于JVM实现)。对应的包装类分别是Byte、Short、Integer、Long、Float、Double、Character、Boolean。实际开发中,比如在使用集合框架时,只能存储对象,这时候就需要将基本数据类型装箱成包装类再存入,例如ArrayListlist=newArrayList();list.add(1);这里的1会自动装箱成Integer对象。
String、StringBuilder、StringBuffer的区别是什么?
答案:主要从可变性、线程安全性和性能三方面区分。String是不可变的,每次对String进行拼接、替换等操作,都会创建新的String对象,原对象不会改变,这会造成内存浪费,性能较差;StringBuilder是可变的,它的操作不会创建新对象,且线程不安全,没有加锁,在单线程环境下使用,性能比StringBuffer好;StringBuffer也是可变的,它的方法加了synchronized锁,线程安全,但因为锁的开销,性能比StringBuilder差。实际开发中,单线程下字符串频繁修改用StringBuilder,比如拼接大量日志内容;多线程下用StringBuffer,比如多线程环境下拼接配置信息。
异常处理中try、catch、finally的执行顺序是怎样的?finally一定会执行吗?
答案:执行顺序是先执行try块中的代码,如果try块中没有异常,执行完try块后执行finally块;如果try块中出现异常,会先跳转到对应的catch块执行,catch块执行完后再执行finally块。finally不一定会执行,比如在try或catch块中调用了System.exit(0)(强制退出JVM),或者电脑突然断电、JVM崩溃等极端情况,finally块就不会执行。例如:
publicclassExceptionTest{
publicstaticvoidmain(String[]args){
try{
inta=1/0;
System.out.println(try块后续代码);
}catch(ArithmeticExceptione){
System.out.println(catch块执行);
System.exit(0);//调用后finally不执行
}finally{
System.out.println(finally块执行);
}
}
}
这段代码中,catch块执行后调用System.exit(0),finally块不会执行。
接口和抽象类的区别?
答案:首先,定义方式不同,接口用interface关键字定义,抽象类用abstract关键字定义。其次,成员变量不同,接口中成员变量默认是publicstaticfinal修饰的常量,必须初始化;抽象类中可以有普通成员变量,也可以有常量。然后,方法不同,接口中Java8及以后可以有默认方法(default修饰)和静态方法(static修饰),其他方法默认是publicabstract修饰的抽象方法,不能有方法体;抽象类中可以有抽象方法(abstract修饰,无方法体),也可以有普通的非抽象方法(有方法体)。还有,继承实现不同,一个类可以实现多个接口(用implements关键字,多个接口用逗号分隔),但只能继承一个抽象类(用extends关键字)。实际开发中,接口常用于定义规范,比如DAO层接口定义数据库操作方法;抽象类常用于抽取多个子类的共性,比如定义一个抽象的Animal类,包含eat()抽象方法,Dog、Cat等子类继承Animal并实现eat()方法。
二、Java集合
ArrayList和LinkedList的区别?
文档评论(0)