JAVA中字符串比较equals和equalsIgnoreCase的区别

如题所述

在JAVA里面,牵扯到equals和equalsIgnoreCase比较字符串的功能函数,前者比较的时候区分大小写,空格,后者比较时忽略大小写。这两个很简单,如下例子:

public class ss
{
   public static void main(String[] args)
   {
       String c1="i am good";
       String c2="i am good";
       String c3="I AM GOOD";
       String c4=new String("i am good");
       String c5=new String("i am good");
       String c6=new String("I AM GOOD");
       System.out.println("c1==c2:"+(c1==c2));
       System.out.println("c1==c3:"+(c1==c3));
       System.out.println("c4==c5:"+(c4==c5));
       System.out.println("c4==c6:"+(c4==c6));
       System.out.println("c1.equals(c2)"+c1.equals(c2));
       System.out.println("c1.equals(c3)"+c1.equals(c3));
       System.out.println("c4.equals(c5)"+c4.equals(c5));
       System.out.println("c4.equals(c6)"+c4.equals(c6));
                 System.out.println("c1.equalsIgnoreCase(c2)"+c1.equalsIgnoreCase(c2));
       System.out.println("c1.equalsIgnoreCase(c3)"+c1.equalsIgnoreCase(c3));
       System.out.println("c4.equalsIgnoreCase(c5)"+c4.equalsIgnoreCase(c5));
       System.out.println("c4.equalsIgnoreCase(c6)"+c4.equalsIgnoreCase(c6));

}

}

可以看到,无论以String c1=”i am good”;方式建立的字符数组还是以String c4=new String(“i am good”);方式建立的数组,在使用equalsIgnoreCase和equals上,两者的区别就在于去不去分大小写。 
==和equals的区别。 
1.首先,从程序执行结果可以看到,在比较以String c1=”i am good”;方式建立的字符数组时,==和以equals的比较结果是一样的,而在以String c4=new String(“i am good”);方式建立的数组时,两者结果却是不一样的,这是因为==比较的是内存位置,不适合拿来比较字符串,而整型等可以用==比较。equals和==的区别就在这里,它比较的是内存中的内容。 
2.以String c1=”i am good”;方式申请数组时,不立即分配内存,而是在用到时分配,而String c4=new String(“i am good”);需要提前分配好数组内存。两者在内存分配上是有区别的。这也是很多JAVA书籍中申请数组时都要加new的原因,当然,不加也可以,也可使用。加于不加new,也就是使用==比较时有区别

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-08
equals 区分大小写
equalsIgnoreCase 不区分大小写本回答被提问者采纳
第2个回答  2016-05-08
boolean equals(Object anObject)
比较此字符串与指定的对象。
boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 进行比较,不考虑大小写。