java面试手册-复制内容

本文介绍了Java编程中的几个核心概念。首先,讲解了hashCode方法与equals方法的关系及其在哈希查找中的作用。接着,讨论了Java不支持全局变量的原因,强调了引用透明性和命名空间管理。然后,解释了浮点型与双精度型转换的注意事项,指出需要强制类型转换以避免精度损失。此外,还提到了Integer对象的缓存机制,解释了为何-128到127之间的Integer比较会得到不同的结果。最后,探讨了String对象的创建方式,区分了常量池与堆内存的分配区别。

1.hashCode 该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到

2.为什么java里没有全局变量?

全局变量是全局可见的,java不支持全局可见的变量,因为:全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突

3.float f=3.4;是否正确?

不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型(窄化)会造成精度损失,因此需要强制类型转换float f=(float)3.4;或者写成float f=3.4F

  一个整数默认是int型,一个小数默认是双精度浮点型

4.Integer a=100,b=100,c=129,d=129

a==b  true

c==d  false

原因:-128~127之间做了缓存。考虑到高频数值的复用场景,这样做还是很合理的,合理优化

5.String str=“a”与String str=new String(“a”)一样吗?

不一样,因为内存的分配方式不一样。

String str=“a”;--->常量池  String str=new String(“a”)--->堆内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值