关于java中==操作和.equals()函数的有趣讨论
来源:互联网 发布:剑三官方道长捏脸数据 编辑:程序博客网 时间:2024/05/19 13:06
首先,==和.equals()函数的区别,简单说来,就是==比较的是两个变量是否引用的同一个变量,而.equals()比较的是两个变量值是否相同,也就是变量的”内容“。即,如果两个变量值相同,但是他们引用的是两个不同地址的变量,那么前者返回false,而后者返回true。
有趣的是如下两段程序
<pre name="code" class="html"> Integer i1,i2; i1 = 1; i2 = 1; System.out.println(i1==i2); System.out.println(i1.equals(i2));
Integer i1,i2; i1 = 1; i2 = new Integer(1); System.out.println(i1==i2); System.out.println(i1.equals(i2));
之所以会有这样的区别,原因在于,在执行程序的过程中,程序会创建变量的缓冲池,当i2用“i2=1”语句赋值时,程序会在缓冲池中先找寻相同的对象,此时由于i1也使用“i1=1”赋值,使得程序找到了相同的对象,于是使用该对象创建了i2,于是i1,i2不仅具有相同的值,他们也是同一个对象的引用。
而对于第二段程序,i2采用new赋值,这就告诉程序,我要创建一个新的对象,用这个新的对象来创建i2。此时,尽管i1,i2具有相同的值,但是他们却不是相同对象的引用,于是导致输出是false,true。
0 0
- 关于java中==操作和.equals()函数的有趣讨论
- java关于==与equals的讨论
- Java中 equals () 和 == 操作符的含义
- 关于java中 == 和 equals 的详解
- java中equals()函数和"=="的区别
- 关于String a=“”以及new String()和==以及equals的讨论
- 整理关于java的String类,equals函数和比较操作符的区别
- [转]整理关于java的String 类,equals函数和比较操作符的区别
- [转]整理关于java的String 类,equals函数和比较操作符的区别
- Java 关于 equals与操作符==的区别
- java的String类,equals函数和比较操作符==的区别
- 关于equals()和==操作的一点理解
- Java中equals和==操作符解析
- 关于java中控制台输入和String类“==”和“equals”的研究
- ==和equals的区别(论坛讨论总结)
- 关于客观现实和虚拟现实的一次有趣的讨论
- 关于java中JDK5的打包,拆包以及"=="和equals的问题
- 在Java 中,关于String的 compareTo()、equals()和== 的区别
- HTML初接触
- 设计模式-1-策略者模式
- java 静态初始化块
- 我的python书写约定 => LTS
- <css 六>table
- 关于java中==操作和.equals()函数的有趣讨论
- codeforce 659E New Reform
- 设计模式-0-begin
- ArrayList 6260652
- for my life
- 在Eclipse中导入项目的一般方法
- ACM之抽屉原理
- 【POJ3093】Margaritas on the River Walk【01背包变种】
- udhcpc为网卡虚拟接口申请IP