您的位置:首页 > 编程语言 > Java开发

Java中"=="和equals方法比较

2017-06-22 21:25 513 查看

Java中”==”和equals方法比较

java中判断两个变量是否相等有两种方式:一是使用==运算符,二是利用equals()方法。如果两个变量是基本数据类型,且都是数值类型可以使用==运算符将返回true,如果两个变量是引用数据类型,只有他们指向同一个对象时,==判断才返回true。

public class Test
{
public statc void main(String[] args)
{
int ii = 100;
float ff = 100.0f;
// 将返回true
System.out.println(ii == ff);
String str1 = "zz";
String str2 = new String("zz");
// str1和str2分别指向两个不同对象,将返回false
System.out.println(str1 == str2);
//将返回true
System.out.println(str1.equals(str2));
}
}


java程序使用像”zz”字符串直接量,java虚拟机将使用常量池来管理这些字符串;当使用new String(“zz”)时,jvm先使用常量池来管理字符串,再调用String构造器创建一个新的String对象。new String(“zz”)一创建了两个字符串对象。

equals()方法是Object类提供的一个方法,其实判断两个对象是否相等equals()方法和==运算符没有区别,同样要求两个引用变量指向同一个对象的时候才会返回true。但是equals()方法可以通过重写来实现自己需要的判断标准,String就是重写了equals()方法实现了”值比较”;。

下面定义一个Person类重写equals()方法,只要idCode相同就确定是一个人。

public class Person
{

private String idCode;

public Person(String idCode)
{
this.idCode = idCode;
}

public String getIdCode()
{
return idCode;
}

public void setIdCode(String idCode)
{
this.idCode = idCode;
}

@Override
public boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (obj != null && obj.getClass() == Person.class)
{
Person p = (Person)obj;
if (this.getIdCode().equals(p.getIdCode()))
{
return true;
}
}
return false;
}

public static void main(String[] args)
{
Person p1 = new Person("123");
Person p2 = new Person("123");
Person p3 = new Person("124");
// 将返回true
System.out.println(p1.equals(p2));
// 将返回false
System.out.println(p1.equals(p3));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: