关于==和equals的区别
2008-07-07 23:05
323 查看
背景:今天开始暑期软工实习课程。看到ppt上的这个知识点有点毛了。
有三段代码://: c03:Equivalence.java
public class Equivalence { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(n1 == n2); System.out.println(n1 != n2); } } ///:~
输出:false
true
//: c03:EqualsMethod.javapublic class EqualsMethod { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(n1.equals(n2)); } } ///:~
输出:true
//: c03:EqualsMethod2.javaclass Value { int i; } public class EqualsMethod2 { public static void main(String[] args) { Value v1 = new Value(); Value v2 = new Value(); v1.i = v2.i = 100; System.out.println(v1.equals(v2)); } } ///:~
输出:false
起初着实不懂,找到网上类似的文章:http://www.cnblogs.com/oldjacky/articles/66604.html和http://topic.csdn.net/u/20071208/17/91362954-7913-4ece-8c18-3b6971a50e4d.html
很不懂,对第一段程序,由结果推,n1、n2是引用类型(虽然不知道为什么,囧),而且不是同一引用,所以才会是fauls。对第二段程序,同样是引用类型,不清楚equals是看引用所对应的值是否相等还是引用是否相等。现在分两种情况:
一、如果是看引用本身的话,那么由2结果,两者是同一引用,与第一个程序矛盾;
二、如果是看引用所对应的值的话,确实为true,对第三个程序,那也应该为true啊,为什么结果是faulse呢?
极度矛盾和迷惑中。。。。。。。。。。。。。。
相关文章推荐
- Java中关于==和equal的区别以及equals()方法重写
- java中关于“==”和“equals()”方法的区别
- 关于Java中的==和.equals()区别
- 黑马程序员——关于java中equals和==的区别
- 关于equals与"=="的区别
- 关于C#中==与Equals方法的区别总结
- 关于equals和==之间的区别(举例说明)
- Java中关于==和equal的区别 以及equals()方法重写
- 关于 equals 和 == 的具体区别 从源码角度分析
- 关于hashcode(),equals()和==的区别
- 关于 compareTo() , equals,和==使用上的区别
- java关于equals与==号的区别以及与hashCode的关系
- 2014/03/13 关于“= =”;“compareTo”;“equals”的区别
- 关于adapter.notifyDataSetChanged()、layout_below与layout_alignBottom的区别、==与.equals区别等问题
- 关于Set的非重复判断以及“==”和“equals”的区别
- Java学习笔记之五——关于"equals"和“==”的区别
- 关于java中equals与==的区别的小实验
- 关于==与equals()区别
- 关于Integer类中equals和"=="的区别
- 有关于String字符串的坑(==号和equals的区别)