在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的区别。
首先,我们从程序执行结果可以看到,在比较以String c1=”i am good”;方式建立的字符数组时,==和以equals的比较结果是一样的,而在以String c4=new String(“i am good”);方式建立的数组时,两者结果却是不一样的,这是因为==比较的是内存位置,不适合拿来比较字符串,而整型等可以用==比较。equals和==的区别就在这里,它比较的是内存中的内容。
我们应该推测出,以String c1=”i am good”;方式申请数组时,不立即分配内存,而是在用到时分配,而String c4=new String(“i am good”);需要提前分配好数组内存。两者在内存分配上是有区别的。这也是很多JAVA书籍中申请数组时都要加new的原因,当然,不加也可以,也可使用。加于不加new,也就是使用==比较时有区别(其他影响我也没发现)。