“equals“和“==“和“compareTo”的区别

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

总结:

  1. 即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,
  2. 返回该不同的字符的asc码差值,如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值

建议:
(1)比较数字 建议使用compareTo,但是也有条件:必须是包装器类型才能使用。
(2)比较字符String类型 建议使用equals,因为比较的是值这样避免了地址的不同。
(3)== 一般不建议使用。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值