`

==和equals

阅读更多
参考文献:
http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html

总结:

1.基本数据类型
(1)包括:byte,short,char,int,long,float,double,boolean
(2)操作:只有 ==
(3)含义:数值内容比较

2.引用数据类型
(1)包括:基本数据类型的包装类、字符串、数组、类以及其他
注:基本数据类型和包装类的区别
(2)操作:==  和  equals
(3)含义:
a.java中所有类都是Object类型的子类,Object类中有equals方法
		Object o1 = new Object();
		Object o2 = new Object();
		if(o1.equals(o2)){
			System.out.println("o1.equals(o2)");
		}else{
			System.out.println("!o1.equals(o2)");
		}
		if(o1 == o2 ){
			System.out.println("o1 == o2");
		}else{
			System.out.println("!o1 == o2");
		}

Console窗口输出:
!o1.equals(o2)
!o1 == o2


即equals方法未被子类重写前,equals与==均为对象的地址比较

public class People {

	private String name ;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "People [name=" + name + "]";
	}

	public People(String name) {
		super();
		this.name = name;
	}	
}

		People p = new People("1");
		People p1 = new People("1");
		if(p.equals(p1)){
			System.out.println("p.equals(p1)");
		}else{
			System.out.println("!p.equals(p1)");
		}


b.重写Object的equals方法

在People类中重写equals方法
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		People other = (People) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

Console窗口输出:
p.equals(p1)

重写equals方法后,equals比较内容,== 比较内存地址

c.Set的去重操作,若使用Set s = new HashSet()时,在重写equals()方法后,一定要重写hashCode()方法,否则判重失效
http://mingyundezuoan.iteye.com/admin/blogs/2211543

参考文献:http://www.importnew.com/2223.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics