- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java基础面试题及答案
问:JDK、JRE、JVM三者的区别是什么?
答:简单说就是包含关系。JVM是Java虚拟机,负责执行字节码;JRE是Java运行环境,除了JVM,还包含运行Java程序必需的类库(比如rt.jar);JDK是Java开发工具包,里面不仅有JRE,还多了编译器(javac)、调试工具(jdb)这些开发用的工具。开发时必须装JDK,而只运行Java程序的话,装JRE就够了。
问:面向对象的三大特征是什么?分别怎么理解?
答:封装、继承、多态。
封装就是把数据和操作数据的方法封装在类里,比如一个User类,把name、age设为private,通过getter/setter访问,这样能保护数据不被随意修改;
继承是子类继承父类的属性和方法,比如Student类继承Person类,就不用再写Person里的name、eat()方法了,还能扩展自己的study()方法,减少重复代码;
多态是同一个行为在不同对象上有不同表现,比如父类Animal有个shout()方法,子类Cat重写为“喵喵叫”,Dog重写为“汪汪叫”,用Animala=newCat()这样的父类引用调用shout(),就能表现出不同效果。
问:String、StringBuffer、StringBuilder有什么区别?
答:主要看可变性和线程安全。
String是不可变的,每次拼接字符串(比如a+b)都会新生成一个String对象,频繁拼接会浪费内存;
StringBuffer是可变的,而且线程安全(方法加了synchronized),但效率低一点,适合多线程环境;
StringBuilder也是可变的,但线程不安全,效率比StringBuffer高,单线程下拼接字符串优先用它,比如循环里拼字符串,用StringBuilder比String快很多。
问:int和Integer有什么区别?自动装箱拆箱是怎么回事?
答:int是基本数据类型,直接存数值,默认值0;Integer是int的包装类,是对象,默认值null,还能调用方法(比如parseInt())。
自动装箱就是把int自动转成Integer,比如Integeri=10;底层其实是Integer.valueOf(10);
自动拆箱是把Integer自动转成int,比如intj=i;底层是i.intValue()。
注意个小坑:Integer有缓存池,默认缓存-128到127之间的数值,所以Integera=127;Integerb=127;a==b会是true,但如果是128,a==b就是false,因为超过缓存范围会new新对象,而==比较的是对象地址。
问:try、catch、finally执行顺序是怎样的?finally一定会执行吗?
答:正常情况是先执行try里的代码,如果没异常,执行完try就走finally;如果有异常,异常处之后的try代码不执行,跳去对应的catch处理,处理完catch再走finally。
finally不是绝对会执行,比如try里直接调用System.exit(0)终止虚拟机,或者电脑突然断电,这种极端情况finally才不执行。另外要注意:如果try或catch里有return,finally会在return之前执行,而且如果finally里也有return,会覆盖try/catch里的返回值。
问:ArrayList和LinkedList的区别是什么?怎么选?
答:底层结构不一样。ArrayList是基于动态数组实现的,查询快(通过索引直接找,时间复杂度O(1)),但增删慢(比如在中间删元素,后面的元素要移位);
LinkedList是基于双向链表实现的,增删快(只需要改前后节点的指针,O(1)),但查询慢(要从头或尾遍历,O(n))。
选的话看场景:如果是查多改少(比如频繁get(i)),用ArrayList;如果是改多查少(比如频繁add(0)、remove(0)),用LinkedList。另外ArrayList初始化时可以指定容量,避免频繁扩容浪费内存。
问:静态变量(static)和实例变量有什么区别?
答:首先是所属不同,静态变量属于类,整个类只有一份,存在方法区;实例变量属于对象,每个对象都有一份,存在堆内存。
调用方式也不一样,静态变量可以用“类名。变量名”或“对象。
您可能关注的文档
最近下载
- 2001-2016年电子科技大学《601数学分析》历年考研真题汇总(含部分答案).pdf VIP
- 古典文献学第二章 文献的形成和流布.ppt VIP
- 2025年综合窗口岗位工作人员招聘考试笔试试题(附答案).docx VIP
- 纪念中国红军长征胜利89周年PPT课件.pptx VIP
- 2025年中国衬橡胶设备数据监测报告.docx
- (NEW)电子科技大学数学科学学院857概率论与数理统计历年考研真题汇编(含部分答案).pdf
- 中央民族大学非事业编制合同制职工招聘笔试试题及答案2021.docx VIP
- 哲理小故事 哲理小故事.doc VIP
- 2025中央民族大学非事业编制合同制职工招聘10人(第四批)笔试备考试题及答案解析.docx VIP
- (校级台账目录)“全国义务教育优质均衡发展县”督导评估台账目录(中小学通用稿-2024.03.30-修订).docx
文档评论(0)