Java必问经典面试试题整理多篇精选范例参考,仅供参考,大家一起来看看吧。一、java中==和equals()的区别?简单来说==适合应用于基本数据类型的比较,而重写后equals()方法适合应用于引用类型的比较。原因在于基本类型变量直接存储的是值本身,而引用类型变量存储的是对象的引用,当引用相同时,用==比较,自然会是true,当引用不同时,用==比较,则会是false。equlals方法是object中的方法,对于所有继承于object的类都会有该方法,当使用equals方法是需对此方法进行重写,如果没有对equals方法重写,则比较的是引用类型的,变量所指向的对象的地址,没有重写的equals,和==效果相同,只有重写了equals,比较的才会是所指对象的内容。二、java中String、StringBuild、StringBuffer的.区别?String是不可变类,因此对String进行操作都会产生新的String对象,容易导致效率低下,浪费内存空间。因此,为了应对经常性的字符串操作,引入了StringBuffer、StringBuild这种字符串变量。StringBufffer和StringBuild最大的区别,就是StringBuffer线程安全,但效率低,而StringBuild线程不安全,但效率高,且此两者只能通过构造函数的方式初始化。而String可以通过构造函数和字面量复制两种方式。三、java中重载(overload、重写(override)的区别?1)重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型、或者不同的参数顺序。不能通过方法的访问权限、返回值类型、和抛出异常类型类进行重载。2)覆盖是指子类函数覆盖父类函数,覆盖一个方法,并对其重写。重写需要注意,子类必须与父类中,被重写的方法有相同的函数名、相同的参数、相同的返回值、以及抛出异常也必须保持一致。四、java中接口和抽象类的区别?1、抽象类和接口都不能直接实例化2、抽象类要被子类继承(extends),接口要被类实现(implements)3、接口只能做方法的声明,且所有方法访问权限必须是public,抽象类中可以做方法声明,也可以做方法的实现。4、接口中定义的变量只能是公共的静态常量,抽象类中的变量可以是普通变量。5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同理如果在实现接口的时候,如果不能实现接口方法,那么该类也只能为抽象类。6、抽象方法只能声明,不能实现,接口是设计的结果,抽象类是重构的结果。7、抽象类里可以没有抽象方法。8、一个类里有抽象方法,那么这个类只能是抽象类。9、抽象方法需要被实现,因此不能是私有的,也不能是静态的。10、接口可以继承接口,并可多继承接口,但类只能单根继承。