我是靠谱客的博主 动听西装,这篇文章主要介绍初识java多态性以及Integer和int类型用==比较,现在分享给大家,希望可以做个参考。

初识java多态性以及Integer和int类型用==比较

一,多态

多态就是同一个接口,使用不同的实例会有不同的操作。
多态实现:动态绑定。
引用变量所指向的具体类型和该引用变量发出的具体方法在编程时并不确定,在程序运行期间才确定。就是说引用变量到底指向哪个类的实例对象,以及调用什么方法在程序执行期间才能完全确定。

二,==

  1. Integer和int比较

Integer是int的封装类,当Integer与int进行==比较时,Integer就会拆箱成一个int类型,所以还是相当于两个int类型进行比较,这里的Integer,不管是直接赋值,还是new创建的对象,只要跟int比较就会拆箱为int类型,所以就是相等的。

  1. Integer对象比较
复制代码
1
2
3
Integer a = 128;//Integer a = Integr.valueOf(128); Integer b = new Integer(128);

Integer a=128被编译成–>Integera= Integer.valueOf(128)
Integer.valueOf源码:low -128;high 127

复制代码
1
2
3
4
5
6
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }

对于[-128,127]之间的数,第一次会缓存,之后从缓存取

new Integer源码

复制代码
1
2
3
4
public Integer(int value) { this.value = value; }

①两个new Integer()变量用==比较不一样,因为是不同对象

②对于[-128,127],使用Integer.valueOf()创建变量,用==比较是相等的。

这是因为Integer作为常量时,对于-128到127之间的数,会进行缓存,也就是说Integer a1 = 127时,在范围之内,这个时候就存放在缓存中,当再创建a2时,java发现缓存中存在127这个数了,就直接取出来赋值给a2,所以a1 == a2。

③Integer.valueOf()和new Integer创建的变量是无论如何不相等的,因为存放的内存位置不一样。

  1. ==到底在比较什么

==比较的是值,引用变量存储的是地址。

所以除了基本数据类型,引用类型是不能用==比较的。

参考文章:
https://blog.csdn.net/andyzhaojianhui/article/details/84324466
https://www.cnblogs.com/zouqf/p/9851050.html

最后

以上就是动听西装最近收集整理的关于初识java多态性以及Integer和int类型用==比较的全部内容,更多相关初识java多态性以及Integer和int类型用==比较内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部