从equals()与==中理解java中对象与引用的概念
来源:互联网 发布:域名出售平台哪个好 编辑:程序博客网 时间:2024/05/16 17:31
简单的例子
在c中我们经常这么写,这个时候我们可以很正常的判断并进入到花括号内;:
string a="1";string b="1";if(a=="1"){...}
但是在java中,如果同样的这么写,就可能得不到想要的结果:
String a=new String("1");String b=new String("1");if(a==b){...}
如果想要实现效果,不妨使用equals()
进行代替:
if(a.equals(b)){...}
原因
概念
在java中我们可以将一切都视作是“对象”。但是,实际上我们所操作的并不是”对象“本身,而是这个对象的”引用“。
比如当创建一个新对象的时候 String a=new String("1");
的时候,实际上做了两件事:一是创建了一个字符串对象(内容是”1”);二是创建了一个引用a使其与这个新的字符串对象相关联。
a在内存中所存储的并不是字符串的内容”1”,而是一个存储了”1”的内容的内存的地址,当我们使用a的时候,我们是通过a所存的地址找到这个地址里的内容”1”。
回到上面的问题
如果两个对象不是一个地址却是一个值的话,==比较的是2个引用所存的东西:各自对象的地址,所以可能就会产生意料之外的结果。
其他的解决方法
当然,直接因为String可以放进常量池中,我们也可以这么写:
String a="1";String b="1";if(a==b){...}
这个时候他们都将指向常量池中的”1”对象,那么存储的地址也就一样啦!
0 0
- 从equals()与==中理解java中对象与引用的概念
- Java中对象与引用的理解
- Java中关于==与equals的理解
- java中==与 String中 equals 和对象中equals比较
- java中对==与equals的理解与使用
- 【java中==与equals的区别】java中==与equals的区别
- 从HashMap 的 key 看 Java 中"=="与"equals"的区别
- 对象比较中equals与==的区别
- java中对象的引用与赋值
- JAVA中对象的赋值与引用
- Java中对象的赋值与引用
- 【零碎JAVA】java中对象比较,equals与==的区别
- 自己对Java中==与equals比较的理解
- Java中对象与引用
- Java中对象与引用
- Java中对象与引用
- Java中引用与对象
- Java中对象与引用
- Android 仿iOS头像选择效果
- 24. jQuery 细节
- Java注释@interface的用法【转】
- 在Django中要求https连接
- windows 注册表解析
- 从equals()与==中理解java中对象与引用的概念
- Bulls and Cows
- SD卡初始化及读写流程
- Linux基本命令(一)
- 关于androidstuio运行程序遇到 Error:(11, 8) 错误: 无法访问HttpEntity 找不到org.apache.http.HttpEntity的类文件解决方法
- 初学者如何学习Vim
- socket编程(1)—— 一对一通信(本地IPC和网络)
- 树的遍历,前中后+层次遍历非递归
- Fresco-加载图片基础[详细图解Fresco的使用]