[java]java中的 == 号判断,为什么基本数据类型就是比较内容,而对象则是比较地址?
来源:互联网 发布:机器视觉定位算法 编辑:程序博客网 时间:2024/06/05 22:44
基本类型都是存在栈里面的,Int a=3;当你int b=3的时候,jvm会干嘛呢?首先,它会去栈里面找是不是已经有一个数据为3了。如果不是的话新建一个地址,是的话,就把b指向这个地址,所以对于基本类型来说,当值相同的时候,地址也是相同的,所以当你对基本类型==的时候,内容相同的肯定返回的是true。。因为实质上,他们的地址也是相同的
但是对于其他类型,都是存在堆里面的动态分配内存,所以每一次新建一个数据都会动态分配一个内存地址,所以==的时候,当然内存地址是不一样的。
要记住,==永远是用来比较内存中的地址的,基本类型感觉上是在比较内容,实际上还是在比较地址!
但是对于其他类型,都是存在堆里面的动态分配内存,所以每一次新建一个数据都会动态分配一个内存地址,所以==的时候,当然内存地址是不一样的。
要记住,==永远是用来比较内存中的地址的,基本类型感觉上是在比较内容,实际上还是在比较地址!
作者:Mao Bravo
链接:https://www.zhihu.com/question/29451160/answer/45024115
来源:知乎
为什么基本数据类型就是比较内容,而对象则是比较地址?
这个问题可以参考享元模式,这个设计是为了避免大量拥有相同内容对象的内存开销。
比如下面这个例子
Integer i1 = 20; Integer i2 = 20 ; System.out.println(i1 == i2); // true Integer i3 = 200; Integer i4 = 200 ; System.out.println(i3 == i4); // false
作者:于光荣
链接:https://www.zhihu.com/question/29451160/answer/44870700
来源:知乎
0 0
- [java]java中的 == 号判断,为什么基本数据类型就是比较内容,而对象则是比较地址?
- Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
- Java "==" equals不一定就是比较内容
- Java基本数据类型的比较
- java中的String为什么可以使用==比较字符串内容?
- java中的对象比较
- Java中的对象比较
- java 中的对象比较
- java 对象类型与基本数据类型传参的比较
- java 对象类型与基本数据类型传参的比较
- Java Integer为什么要使用equals而不会==比较
- chap2 和java的基本数据类型比较
- C++与Java基本数据类型比较
- C++与Java基本数据类型比较
- C++与Java基本数据类型比较
- C++与Java基本数据类型比较
- C++与Java基本数据类型比较
- C++与Java基本数据类型比较
- Error:A problem was found with the configuration of task ':app:packageDebug'
- 欢迎使用CSDN-markdown编辑器
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法
- Material Design中 FAB (Floating Action Button) 的使用
- Fragment的回退栈
- [java]java中的 == 号判断,为什么基本数据类型就是比较内容,而对象则是比较地址?
- Android学习笔记4--XmlPullParser的使用
- 内部及外部SD卡存储空间存储
- select列表左右选择框
- Python面试必备金典,还说你会python?
- QT 设计
- Qt提供的qSort函数各种顺序
- MySQL数据库使用注意事项
- 深入分析MySQL的逻辑架构