标签:结果 类型 超过 str 基本 比较 缓存 引用类型 内容
众所周知
对于基本类型而言,equals和没有区别,但对于引用类型 equals比较的是内容(类型+值),比较的是地址
一开始我以为像Integer这种包装类由于是引用类型,应该用equals比较 直到...
Integer a=20;
Integer b=20;
System.out.println(a==b);
结果为true!
难道 Integer和String一样,也有个常量池吗?
于是
Integer a=new Integer(20);
Integer b=new Integer(20);
System.out.println(a == b);
果然结果为false!
原来Integer有个缓存的原理 如果值为[-127,128]之间 则不会创建对象,超过这个范围则会创建对象
Integer a=200;
Integer b=200;
System.out.println(a==b);
结果为false!
所以 以后在不确定Integer的值时老老实实用equals吧!
标签:结果 类型 超过 str 基本 比较 缓存 引用类型 内容
原文地址:https://www.cnblogs.com/wangstudyblog/p/14658901.html