equals(),equalsIgnoreCase().compareTo()以及==de 的差异
equals(),equalsIgnoreCase().compareTo()以及==de 的区别
想在字符串中,要是相比较两个字符串常用的有几种方法:1、==;2、equals();3、 equalsIgnoreCase();4、compareTo();
第一种方法:==是用来比较两个字符串的地址是否相等;
第二种方法:是用来比较两字符串的值是否相等;
第三种方法:与第二种方法类似,但是不区分大小写;
第四种方法:比较两字符串的大小并返回两字符串的长度差或者第一个不同的字符的unicode码值差。
下面我们看一下简单的实例来说明;
第一种方法:==
public class String_1 { public static void main(String []arg){ String a="abcdef"; String b="abcdef"; if(a==b){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }
public class String_1 { String a="abcd"; } ///////////// public class String_2 { String b="abcd"; } /////////////// public class Text { public static void main(String []arg){ String_1 st1=new String_1(); String_2 st2=new String_2(); if(st1.a==st2.b){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }
//上面的输出的结果都是:a==b
为什么上面的输出时a==b呢?因为在Java中,数值相同的常量是放在同一内存地址,将其赋值给a、b时候就是把字符串的内存地址引索给了他们。所以a,b比较实质是比较相同的地址。
再看下面:
public class Text { public static void main(String []arg){ String a=new String(a="abcd"); String b=new String(b="abcd"); if(a==b){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }
这一段代码的输出结果是:a!=b;这是因为a,b是两个对象的存放,两对象的地址不一样。
第二种方法:equals();
public class Text { public static void main(String []arg){ String a=new String(a="abcd"); String b=new String(b="abcd"); if(a.equals(b)){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }
public class Text { public static void main(String []arg){ String a="abcd"; String b="abcd"; if(a.equals(b)){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }上面的输出结果都是:a==b;在上面比较==时候已经看到两段代码的结果是不一样的,是因为他们的地址引索不一样,而equals();比较的结果却是一样的,是因为他们的值都一样。当他们字符串的赋值不一样时候
public class Text { public static void main(String []arg){ String a="abcd"; String b="Abcd"; if(a.equals(b)){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }输出的结果:a!=b;
方法三:equalsIgnoreCase();
他是比较两字符串,不区分大小写;
public class Text { public static void main(String []arg){ String a="abcd"; String b="Abcd"; if(a.equalsIgnoreCase(b)){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }输出的结果是:a==b;
public class Text { public static void main(String []arg){ String a="abcd"; String b="bcd"; if(a.equalsIgnoreCase(b)){ System.out.println("a==b"); } else{ System.out.println("a!=b"); } } }输出结果是:a!=b;
第四种方法:compareTo();这是用来比较当前字符串与摸字符串的大小,返回两字符串的长度差或者第一个出现不同的字符的unicode值之差。
public class Text { public static void main(String []arg){ int n; String a="abcd"; String b="abcdefgh"; n=a.compareTo(b); System.out.println(n); } }输出结果:-4;
public class Text { public static void main(String []arg){ int n; String a="abcd"; String b="abcdefgh"; n=b.compareTo(b); System.out.println(n); } }输出结果:0;
public class Text { public static void main(String []arg){ int n; String a="abcd"; String b="abcdefgh"; n=b.compareTo(a); System.out.println(n); } }输出结果:4;
public class Text { public static void main(String []arg){ int n; String a="abcdefgh"; String b="Abcdefgh"; n=b.compareTo(a); System.out.println(n); } }输出结果是:-32;
小弟初学Java不到两个月,有啥错误的或者有啥不足的请求大神、大牛指出
注:unicode码是啥?http://baike.baidu.com/view/40801.htm?fr=aladdin