1. 功能不同
- "=="是判断两个变量或实例是不是指向同一个内存空间。
- "equals"是判断两个变量或实例所指向的内存空间的值是不是相同
- “compareTo"是比较两个字符串是否相同
2. 定义不同
- "equals"在JAVA中是一个方法。
- "=="在JAVA中只是一个运算符。
- ”compareTo"在java中是一个方法
3.比较不同
- "=="是指对内存地址进行比较
- "equals"是对字符串的内容进行比较
- "compareTo"按字典顺序比较两个字符串,不考虑大小写。
总结:
==是指引用是否相同
equals指的值是否相同
compareTo比较值是否相同-按字典顺序比较
注意:compareTo排序是根据两个字符串之间的顺序比值来排列的,
(变量1).<方法>(变量2),返回的值是变量1比变量2的字典顺序。
一图胜千言
举个例子:
public class EqualsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer aaa=new Integer(5);
Integer bbb=new Integer(5);
int a=10;
int b=10;
String str1=new String("justice");
String str2=new String("justice");
String str3;
str3=str1;
System.out.println(aaa==bbb);
System.out.println(aaa.equals(bbb));
System.out.println(a==b);
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
}
}
答案:
总结:
1.包装类型之间比较用equals来进行比较
2.“==” 从定义上来讲是对同一地址的值进行比较 ,相当于比较两层 ,“equals”比较值是否相同,不管是否是同一地址,比较一层
关于comparTo的例子:
String str1 = "abc", str2 = "ab", str3 = "abccc", str4 = "abe";
System.out.println("str1.compareTo(str2):" + str1.compareTo(str2));
System.out.println("str2.compareTo(str1):" + str2.compareTo(str1));
System.out.println("str1.compareTo(str3):" + str1.compareTo(str3));
System.out.println("str1.compareTo(str4):" + str1.compareTo(str4));
Integer num1 = 1, num2 = 4;
System.out.println("num1.compareTo(num2):" + num1.compareTo(num2));
System.out.println("num2.compareTo(num1):" + num2.compareTo(num1));
Character a = 'a', d = 'd';
System.out.println("a.compareTo(d):" + a.compareTo(d));
答案:
str1.compareTo(str2):1
str2.compareTo(str1):-1
str1.compareTo(str3):-2
str1.compareTo(str4):-2
num1.compareTo(num2):-1
num2.compareTo(num1):1
a.compareTo(d):-3
总结:
- 即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,
- 返回该不同的字符的asc码差值,如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值
建议:
(1)比较数字 建议使用compareTo,但是也有条件:必须是包装器类型才能使用。
(2)比较字符String类型 建议使用equals,因为比较的是值这样避免了地址的不同。
(3)== 一般不建议使用。