java中equals和compareTo的比较

2018-12-27  本文已影响0人  Kraos

java中equals和compareTo的区别

今天学JavaWeb时,看到源码中的这种字符串的比较方式,不禁思考了一下equals和compareTo两者的比较方式哪个性能高,遂查了相应资料:

if((cookie.getName( )).compareTo("name") == 0 ){
    cookie.setMaxAge(0);
    resp.addCookie(cookie);
    out.print("已删除的 cookie:" +
            cookie.getName( ) + "<br/>");
}

equals的效率高些,compareTo其实就是按照编码的数值求差值,根据差值进行比较,它能确定两个String在字典顺序上的前后性,当你只是想知道是否一致时,用equals也行,效果一样。

另外,equals是Object的方法,要求涉及到比较操作的继承类要自己重写该方法,所以String重写了equals,而compareTo为String的方法。所以:
value1.compareTo(value2),当value1不为String类型时,会报错。
而value1.equals(value2),都会进行比较。

  1. == : 基本数据类型都用这个比较,
    Java里面包含8个基本数据类型,分别是:
    boolean、byte、char、short、int、float、double、long
    注意String 可不属于基本数据类型,它是个类...

  2. equals() 用于引用数据类型(除了上面的8个,都是引用数据类型,包括封装类,Object子类等), 比较是否指向相同的对象,
    例如 String str = "abc";
    等效于: char data[] = {'a', 'b', 'c'}; String str = new String(data);
    就是str 指向了 new String(data) 这个对象. 如果再有其他变量也指向这个对象,他们比较的结果就返回true;
    由于此方法在Object里, 所以它有很多重写, 具体要看说明;
    另外``` equalsIgnoreCase()可以忽略大小写;

  1. compareTO可以比较两个字符串并且得到顺序.
    按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。
上一篇 下一篇

猜你喜欢

热点阅读