String中 ==与equals的区别

来源:互联网 发布:数控铣床编程简单图案 编辑:程序博客网 时间:2024/05/19 00:56
public class StringEquals{    public void bijiao(String a,String b){        System.out.println("-----------a与b的比较-------");        if(a==b)            {System.out.println("a==b");}        if(a!=b)            {System.out.println("a!=b");}        if(a.equals(b)){            System.out.println("a equals b");        }        if(!a.equals(b)){             System.out.println("!a equals b");        }    }    public static void main(String[] args){        String a = "I love u",b = "I love u";        String c = new String("I love u");        // a与b的比较        StringEquals bj = new StringEquals();        bj.bijiao(a,b);       // a与c的比较        bj.bijiao(a,c);        //引用实例测试        a = "123";        System.out.println("-----------引用实例测试-------:修改a=123");        System.out.println("a="+a);        System.out.println("b="+b);        bj.bijiao(a,b);    }} /*-----------a与b的比较-------a==ba equals b-----------a与b的比较-------a!=ba equals b-----------引用实例测试-------:修改a=123a=123b=I love u-----------a与b的比较-------a!=b!a equals b*/

结果如上:
表明在字符串中,==与 !=是比较两个字符串是否引用同一个字符串对象,也即内存地址是否相同。而equals则是比较两者是否相等,也即字符串是否匹配。
由于new是新建实例对象,也即拥有自己的独立地址,所以在例子中a!=c,但是a equals c.
在修改引用实例例子时候,发现当修改某个引用实例字符串a的时候,并不影响之前同时引用同一个字符串的b,
a!=b,!a equals b 说明a、b不再同时指向同一个引用实例。
而如果 a=”123”;b = new String(“123”);的话结果和以上一样。a!=b a equals b

0 0