面试题整理一:Java基础篇

一.String类可以被继承吗?
答:String 类在声明时使用fianl关键字修饰,被final关键字修饰的类无法被继承。

二.&和&&的区别?
答:&运算符是逻辑与,&&运算符是短路与。当&&运算符左边的表达式结果为false的时候,右边的边大师不执行,此时就发生了短路现象,如果是&运算符,那么不管左边的表达式是true还是false,右边表达式是一定会执行的,这就是他们俩的本质区别,当然&运算符还可以使用在二进制位运算上,列入按位与操作。

三.两个对象值相同equals结果为true,但却可有不同的hashCode,这句话对不对?
答:不对。如果两个对象相同(equlas方法返回true),那么它们的hashCode值一定要相同。如果两个对象的hashCode相同,那么它们的不一定相同。

四.重载和重写的区别?重载的方法能否根据返回类型进行区分?
答:方法重载的规则:方法名一致,参数列表中参数的顺序,类型,个数不同。
重载与方法的返回值无关,存在于父类和子类,同类中。可以抛出不同的异常,可以有不同的修饰符。
方法重写的规则:参数列表,方法名,返回值类型必须完全一致,构造方法不能被重写,声明为final的方法不能被重写,声明为static的方法不存在重写(重写和多态联合才有意义),访问权限不能比父类更低,重写之后的方法不能抛出比父类更大的异常。

五.为什么犯法不能根据返回类型来区分重载?
图片说明
答:在java语言中,调用一个方法,及时这个方法有返回值,我们也可以不接受这个返回值,例如以上两个方法doSome(),在testMethod()中调用的时候,Java编译器无法区分调用的具体是哪个方法,所以对于编译器来说,doSome()方法不是重载而是重复了,编译器报错,所以区分这两个方法不能依靠方法的返回值类型。

六.抽象类和接口有什么异同?
答:抽象类和接口都不能被实例化。
抽象类可以有抽象方法,可以没有,接口里必须是抽象方法。
抽象类里可以有普通成员变量,接口里不行,默认是public static final修饰。
抽象类可以有构造方法,接口中不能有构造方法。

七.final关键字除了修饰类之外,还有那些用法?
答:final修饰的变量,一旦赋值,不可重新赋值。
final修饰的方法无法被重写。
final不能和abstract关键字一起使用。

八.==和equals的区别?
答:==:如果比较的对象时基本数据类型,则比较的是数值是否相等,如果比较的是引用数据类型,则比较的是对象的地址值是否相等。
equals():用来比较方法两个对象的内容是否相等,equals方法不能用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址。

九.阐述静态变量和实例变量的区别?
答:不管创建多少个对象,静态变量在内存中有且仅有一个;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到他,静态变量可以实现让多个对象共享内存。

十.Java中实现多态的机制是什么?
答:父类引用指向子类对象。

十一.final,finally,finalize的区别?
答:final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。
finally:异常处理语句结构的一部分,表示总是执行。
finalize:Object类的一个方法,当Java对象没有更多的引用指向的时候,会被垃圾回收器回收,改对象呗回收之前,由垃圾回收器来负责调用此方法。

十二.error和exception的区别?
答:Error异常一般是指与虚拟机相关的问题,如系统崩塌,虚拟机错误,内存空间不足,方法调用栈溢出等,遇到这种问题,建议让程序终止。
Exception异常表示程序可以处理的异常,可以铺货且可能恢复,遇到这种异常,应该尽可能的处理异常,使程序恢复运行。

十三.Java异常处理机制的理解?
答:java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的父类为Java.lang.Throwable,Throwable下面有派生了两个子类:Error和Exception。Error表示引用程序本身无法客服和恢复的一种严重问题,Exception表示程序还能够客服和恢复的问题,其中又分为系统异常和普通异常。

十四.throw和throws的区别?
答:throw语句用在方法体内,表示抛出异常吗,由方法体内的语句处理。
throw是具体向外抛出异常,所以他抛出的是一个异常实例,执行throw一定是抛出了某种异常。
throws语句使用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。
throws主要是声明这个方法会抛出某种类型的异常,让他的使用者要知道需要捕获的异常的类型。
throws表示出现异常的一种可能性,并不一定会发生这置哪个异常。

十五.String,StringBuilder,StringBuffer的区别?
答:String是final修饰的,所以字符串的内容不能改变的。
StringBuilder和StringBuffer表示的字符串对象可以直接进行修改。
StringBuilder是线程不安全的,StringBuffer是线程安全的。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务