常见面试题(三)java基础

1、如何在父类中为子类自动完成所有的hashcode和equals实现?这么做有何优劣。

在覆盖equals方法的时候,你必须要遵守它的通用约定。下面是约定的内容,来自Object的规范[JavaSE6]

自反性。对于任何非null的引用值x,x.equals(x)必须返回true。

对称性。对于任何非null的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true

传递性。对于任何非null的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也必须返回true。

一致性。对于任何非null的引用值x和y,只要equals的比较操作在对象中所用的信息没有被修改,多次调用该x.equals(y)就会一直地返回true,或者一致地返回false。

 

2、访问修饰符public、private、protected、default在应用设 计中的作用

类的只有两种public,default(不同包不可以访问)

public–都可访问(公有)

private–类内可访问(私有)

protected–包内和子类可访问(保护)

不写(default)–包内可访问 (默认)

public>protected>default>private

Java 方法默认访问级别 : 包访问

3、深拷贝和浅拷贝区别

浅拷贝是指:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制。

深拷贝是指:不仅复制当前的对象,如果对象中还存在引用,则将引用的对象一起复制。

4、Error和Exception区别

Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。

Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。所以这种异常不可能抓取到,比如OutOfMemoryError、NoClassDefFoundError、VirtualMachineError、LinkageError等

CheckedException,RuntimeException的区别:

CheckedException:(编译时异常) 需要用try——catch显示的捕获,对于可恢复的异常使用CheckedException,如IOException、SQLException。

UnCheckedException(RuntimeException):(运行时异常)不需要捕获,对于程序错误(不可恢复)的异常使用RuntimeException,如:ArrayIndexOutOfBoundsException、ArithmeticException、MissingResourceException、ClassNotFoundException、illegalArgumentException。

5、为什么需要hashCode?

1、 在map等集合中,通过hashCode可以很快的找到元素的位置

2、比较两个对象是否相等时,先通过hashCode比较,这样速度比较快,如果不相等直接返回false

 

6、为什么要重载equal方法?

Object对象默认比较的是两个对象的内存地址是否一样,正常大家应该比较的是对象里面的值是否一样。

 

7、为什么重载hashCode方法?

如果我们只重写equals,而不重写hashCode方法,就会出现两个对象一样,但是hashCode不相等情况,在map等集合中应用时,就会出现问题,因为hashCode不一样,两个一样的对象会放到集合中。

8、a.hashcode() 有什么用,与a.equals(b)有什么关系

hashcode只能说是标识对象,在hash算法中可以将对象相对离散开,这样就可以在查找数据的时候根据这个key快速缩小数据的范围,但hashcode不一定是唯一的,所以hash算法中定位到具体的链表后,需要循环链表,然后通过equals方法来对比Key是否是一样的

equals与hashcode的关系

equals相等两个对象,则hashcode一定要相等。但是hashcode相等的两个对象不一定equals相等。

9、在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题

泛型主要针对向下转型时所带来的安全隐患,其核心组成是在声明类或接口时,不设置参数或属性的类型。

10、有没有可能2个不相等的对象有相同的hashcode。

有可能

11、JAVA中的几种基本数据类型,是什么,各自占用多少字节?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值