java String对象中‘==’,equals与compareTo函数的使用和区别

来源:互联网 发布:python获取股票数据 编辑:程序博客网 时间:2024/05/16 16:12

        java String类中可能最让初学者容易混淆的两个东西就是"==“,与"equals"的区别了,因为他们都是用来比较字符串的,那么它们有什么区别呢,下面简单谈谈这两者的区别:

        ”equals“: 比较的是两个字符串中的每个字符是否相同,例如:a="1243", b="1243",那么a.equals(b)就会返回TRUE,因为a和b两个字符串中的每一个字符都相同,如果对a或者b中的任何一个做任何修改,equals()就会返回false。


        ”==":比较的是两个字符串是否同时引用的一个地址,如果a=new String("abc"); a = b;b引用的a,所以"a == b"的比较就会返回TRUE。

        compareTo(): 这个函数的作用就是对两个字符串按字典排序的方式进行比较,返回两个字符串中第一个不同的字符的ascII码差值。


下面有程序代码看看测试结果:

        

public class equals_compareTo {      public static void main(String[] args) {          String a = "abcd";          String b = "abcd";            String c = new String("abcd");          String d = new String("abcd");            String e = c;          String f = "absd";            System.out.println("a.equals(b): " + a.equals(b));//a和b在字面上的每个字母都是相同的,所以返回TRUE          System.out.println("b.equals(c): " + b.equals(c));//c和b在字面上的每个字母都是相同的,所以返回TRUE            System.out.println("a == b: " + (a == b));//此处为什么会返回TRUE呢,原因是我们先定义了a="abcd",当我们再次定义b="abcd"是,系统检测到已经在内存中存在了相同的"abcd",所以b会直接引用已有的"abcd"            System.out.println("a == c: " + (a == c));//a和c不是引用的同一个对象,所以false          System.out.println("a == f: " + (c == d));//d和c不是引用的同一个对象,所以false            System.out.println("c == e: " + (c == e));//e引用c,所以比较会返回true            System.out.println("f.compareTo(c): " + f.compareTo(c));//比价结果是16,即第一个不同的字母s与c的ascII码差值          System.out.println("a.compareTo(c): " + a.compareTo(c));//ac值相同,返回0      }  }  


        程序的运行结果如下:

         

a.equals(b): trueb.equals(c): truea == b: truea == c: falsea == f: falsec == e: truef.compareTo(c): 16a.compareTo(c): 0


0 0
原创粉丝点击