有趣的代码,你看出了什么来(堆与栈,map的key不同指的是什么,integer的218,地址与hashCode)

Integer a = new Integer(212);
Integer b = new Integer(212);
String as = new String("212");
String bs = new String("212");
HashMap<Object, Object> integerMap = new HashMap<>();
HashMap<Object, Object> strMap = new HashMap<>();
IdentityHashMap<Object, Object> identityHashMap = new IdentityHashMap<>();
integerMap.put(a,"212");
integerMap.put(b,"212");
strMap.put(as,"212");
strMap.put(bs,"212");
identityHashMap.put(as,"212");
identityHashMap.put(bs,"212");
System.out.println("integer a==b:"+ (a==b) + "\ta.hash:" + a.hashCode() +" b.hash:"+b.hashCode());
System.out.println("String as==bs:"+ (as==bs));
System.out.println("integer equals:"+ (a.equals(b)));
System.out.println("String equals:"+ (as.equals(bs)));
System.out.println("integerMap:"+integerMap);
System.out.println("strMap:"+strMap);
System.out.println("identityHashMap:"+identityHashMap);
int ai = System.identityHashCode(a);
int bi = System.identityHashCode(b);
System.out.println("ai:" +ai + "\t bi:"+bi );
int bi0 = System.identityHashCode(212);
int bi1 = System.identityHashCode(212);
System.out.println("大于218的int bi0:" +bi0 + "\t bi1:"+bi1 );
int ii0 = System.identityHashCode(12);
int ii1 = System.identityHashCode(12);
System.out.println("小于218的int ii0:" +ii0 + "\t ii1:"+ii1 );
int i0 = System.identityHashCode(a);
int i1 = System.identityHashCode(a);
System.out.println("Integer a = new Integer(212) 同一个对象地址i0;"+i0 + " i1:"+i1);
int int1=99;
int int2=99;
float float1=99;
float float2=99;
System.out.println("System.identityHashCode(int1) == System.identityHashCode(int2):"+(System.identityHashCode(int1) == System.identityHashCode(int2)) );
System.out.println("System.identityHashCode(float1) == System.identityHashCode(float2):"+(System.identityHashCode(float1) == System.identityHashCode(float2)) );

jdk:jdk1.8.0_181

输出:

integer a==b:false    a.hash:212   b.hash:212
String as==bs:false
integer equals:true
String equals:true
integerMap:{212=212}
strMap:{212=212}
identityHashMap:{212=212, 212=212}
ai:1711574013     bi:1631862159
大于218的int bi0:1146848448     bi1:1638215613
小于218的int ii0:591137559     ii1:591137559
Integer a = new Integer(212) 同一个对象地址i0;1711574013     i1:1711574013
System.identityHashCode(int1) == System.identityHashCode(int2):true
System.identityHashCode(float1) == System.identityHashCode(float2):false

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值