济南网站建设,济南做网站,济南网站制作

java中"=="和equals和equalsIgnoreCase三者的区别

admin 2017年09月23日 Java知识 1564 0

在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,也就是使用==比较时有区别(其他影响我也没发现)。

SpringMVC下的Shiro权限框架的使用
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。