java程序中测试两个变量是否相等,一种是利用==运算符,另一种是利用equals方法.
当使用==来判断两个变量是否相等时,如果两个变量是基本数据类型,且都是数值型(不一定要求数据类型严格相同) 则只要两个变量值相等,使用==判断就会返回true
如果对于两个引用类型的变量,必须他们指向同一个对象时,==判断才会返回true ,==不可比较类型上没有父子关系的两个对象,下面程序使用==来判断两种变量是否相等的结果
public static void main(String[] args)
{
int it = 65;
float fl = 65.0f;
//将输出true
System.out.println("65和65.0f是否相等?" + (it == fl));
char ch = 'A';
//将输出true
System.out.println("65和'A'是否相等?" + (it == ch));
String str1 = new String("hello");
String str2 = new String("hello");
//将输出false
System.out.println("str1和str2是否相等?" + (str1 == str2));
//将输出true
System.out.println("str1是否equals str2?" + (str1.equals(str2)));
}
这个程序的运行结果上面的文件已经解释了
但是在很多时候,判断两个引用变量是否相等,也希望有一种类似于"值相等"的pandaun规则,并严格要求两个引用变量指向同一个对象,例如在实际应用中,一个集合里面有很多商品,那么我们怎么判断有些商品是同一个呢?我们不需要他们指向同一个对象才任务相等,只要他们的标识符ID相等,即认为他们是相同的商品,黎活明老师的巴巴运动网将的很清楚,
equals方法是Object类的方法,因此所有的引用变量都可以调用该方法判断是否与其他的引用变量想等,但是这个方法判断两个对象相等的标准语==没有区别,同样要求两个引用变量指向同一个对象才放回true,因此这个Object的equals方法没有实际的意义,在大多数情况下我们需要自定义相等的标准,可以重写equals方法实现.
另外,很多人说equals方法是判断两个对象的值相等,这个 说法是相等错误的 ,什么叫对象的值呢?对象的值如何相等呢?实际上重写equals方法就是提供自定义相等的标准. |