前言面试是一个很让我们 头疼的问题如果要获取一个好的面试结果就需要我们去准备充分此篇博客为小编总结的一些高频se基础部分面试题 和对应回答答案 方面面试前各位看官老爷可以复习回顾 同时也是小编对Javase的总结 希望会对你有所帮助1.面向对象编程的三大特性是什么1继承继承是一种联结类的层次模型允许和鼓励类的重用它提供了一种明确表述共性的方法子类可以从父类那里继承方法和实例变量并且 可以修改或增加新的方法继承主要是对共性的一种抽取 关键字extends2封装封装是把过程和数据包围起来对数据的访问只能通过已定义的界面封装的过程中类的内部实现对外部是隐藏的只有通过定义好的接口才能与类的对象进行交互封装通常是通过将类的字段属性设置为私有private来实现的3多态多态是指同一消息可以根据发送对象的不同而采用多种不同的行为方式多态的三个条件继承子类继承父类或实现接口。重写子类覆盖父类的方法。父类声明子类使用父类引用来声明子类对象2.String与StringBuffer的区别String和StringBuffer都是用来存储和操作字符串但String里字符串数值不可变 而StringBuffer可以动态操作构建字符串3.final的作用final用于声明属性方法和类分别表示属性不可变方法不可覆盖类不可继承4.重载OverLoad和重写Override的区别重载是指Java中一个类可以有多种方法名相同的方法参数个数和类型 以及返回值类型都可以不同重写指的是子类对父类方法的重新定义方法名一样 参数一样返回值一样只是修改方法内部而且重写子类方法的修饰符必须要大于被重写方法且抛出异常不能比被重写方法更宽泛5.error和exception有什么区别error表示系统出现严重错误无法通过代码恢复exception表示程序运行中可捕获并处理的异常6.abstractClass和interface的区别1.abstract class 只能使用一个类继承关系而interface可以被一个类多引用2.abstract class可以包含具体方法和抽象方法 interface只能含有抽象方法3.abstarct class代表“is a”的设计理念 ,interface代表like a 的设计理念4.abstarct class 中的成员变量可以被子类修改 定义interface中的成员变量默认是public static final 必须赋初值不能被修改和定义7.swtich是否能作用在byte上是否能作用在long上是否能作用在String上?**switch只能作用在byte short int long char狭义jdk1.7之前不能作用于String 之后可以8.char类型可不可以存储中文汉字可以 Java中汉字和英文都是通过unicode编码的 Java中char类型占两个字节9.Java的基本数据类型有哪些Java有八种数据类型byte short int long,float double,char,boolean10.JDK与JRE有什么区别JDk代表开发组件 Jre代表着运行环境 jdk包含了jre jdk jre jvm三者关系图如下11. 和 equals 的区别是什么使用比较基本数据类型时 会比较值是否相等 比较对象时 会比较对象的内存地址是否相等equals 默认是比较内存地址 但可重写equals方法 比如String中就重写了equals方法 会比较对象内容12.两个对象的 hashCode()相同则 equals()也一定为 true对吗不对 hashCode一样只能说明会在一个哈希桶 中 不一定就代表equals就一定相同了比如String类会有无限种组合方式一定会有重复hashCode内容也肯定不相同但反过来自定义类equals一样 hashCode方法值必须一样否则不符合规范 且会导致 集合数据混乱在 实际开发中重写equals就必须要重写hashCode来保证equals相同时 hashcode必须相同避免出现无法预料的错误13.String stri与 String strnew String(i)一样吗不一样 JVM中含有计数器 栈 堆 元数据区第一个数据是放在字符串常量池中也就是元数据区 第二个生成类是存储在堆上的14.nextLine与next的区别nextLine方法返回的是Enter键之前的所有字符它是可以得到带空格的字符串的next会自动消去有效字符前的空格只返回输入的字符不能得到带空格的字符串两者在使用时如果nextLine在后面紧跟着使用 此时 就会读取next的enter键 获取到一个空的字符串 nextLine跟next的区别可以按照这个例子去理解 概念很简单 但需实践中去体会哦-15.指向问题Child c1new Child(18,王,1); Child c2c1; c2.setName(wangshuo); //?问c1此时是否被修改 System.out.println(c1.getName());//wangshuo String aaa; String ba; bbb; //?问此时a是否被修改 System.out.println(a);//aa对象引用多个引用指向同一对象通过任一引用修改对象内部状态其他引用都能看到变化。字符串引用虽然也是引用类型但字符串不可变重新赋值只是改变引用的指向不会影响原字符串对象也不会影响其他指向原字符串的引用