Java基础知识复习

12.内存地址与hashcode关系。
每当new一个对象,则一定会开辟一份新的内存空间,该空间则由一个唯一的地址码指代。
对于Object对象,hashcode与内存地址唯一映射,hashcode由确定的算法通过内存对象产生。
如果重写了hashcode,则hashcode就未必与内存地址有关系了。


1.==与equals区别,
==比较内存地址(非hashCode)。
未重写equals方法的对象比较内存地址。
重写了equals方法的对象根据重写的条件来定。
e1):下列输出false是因为内存地址不一样
Integer i1=new Integer(1);
Integer i2=new Integer(1);
System.out.println(i1==i2);

Integer i3=1234567;
Integer i4=1234567;
System.out.println(i3==i4);


e2)下列输出true是因为数字[-128,127]之间装箱会使用缓存对象
Integer i3=123;
Integer i4=123;
System.out.println(i3==i4);


2.map中的key如何比较相等:
用对象的equals方法。

2.Long是否适合做map的key
适合,因为Long重写了equals方法,longValue相等的两个Long对象equals必相等,而map的key正是通过equals方法识别是否相等。

3.Integer是否适合做map的key.
适合,因为Integer重写了equals方法,longValue相等的两个Long对象equals必相等,而map的key正是通过equals方法识别是否相等。


4.比较两个Long是否相等。
equals

5.Integer比较大小。
equals


6.Long与Integer比大小
转换成基本类型再比较。

7.Long与Integer相互转换。
1)Integer转为Long
Integer i5=12345678;
Long i6=i5.longValue();

2)Long转为Integer
Long i5=12345678L;
Integer i6=i5.intValue();

3)将long型转化为int型,这里的long型是基础类型:
long a = 10;
int b = (int)a;

4)int 转化为Long

int a = 10;
long b = a;

8.new与非new的区别。
String s5="abc";
String s6="abc";
System.out.println(s5==s6);

String s8=new String("abc");
System.out.println(s5==s8);

因为 String s5="abc"; 是从常量池中拿。
new String("abc")是新开辟内存空间,一般不用这种方式。

10.解释integer与Long的128问题。
-128到127间的值北放到了一个数组中,即代码中的LongCache.cache[]/IntegerCache.cache[],所以我们拿到的是同一个实例,同理其他大类型也是相同,能够在看下Integer验证下

11.对象属性应该用基本类型还是包装类型?
建议使用包装类型,包装类型有NULL,可以区分出是否赋值了。
当基本类型为0时候,就无法直接判断是因为初始值给的0还是赋值给了0.


如何比较两个Double是否相等?

如何比较两个Float是否相等?

Inter与Double互相转换?

Long与Double互相装换?


Double与Float互相转换?

Double与Float精度比较及适用场景?

Byte的特点及适用场景有哪些?

BigDecimal的应用场景有哪些?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值