java中的字符串比较

在比较java中的两个String类型的对象时:

1.

1 String s1=new String("123");
2 String s2=new String("123");
3 System.out.println(s1==s2);
4 System.out.println(s1.equals(s2));

此时s1,s2分别为String对象的引用,如果直接用==进行比较,由于比较的是对象的引用,而尽管都为String对象,但S1,S2表示的是不同的引用,所以结果为false。

但是使用equals()方法,可以直接比较两个对象的实际内容是否相同,所以结果为true;

2.

1 String s3="asd";
2 String s4="asd";
3 System.out.println(s3==s4);

这里定义两个基本类型s1,s2,此时可以直接用==来比较它们的值是否相同(也可用equals(),结果相同),最后结果为true。

3.

 1 public class Candy{
 2     static{
 3         System.out.println("loading Candy");
 4     }
 5         public static void main(String[] args){
 6         Candy c1=new Candy();
 7         Candy c2=new Candy();
 8         System.out.println(c1.equals(c2));
 9         }
10 }
11 
12                

此时是自定义类Candy的对象的两个不同引用c1,c2,但由于equals()默认比较引用,所以结果仍为false。因此若想比较两个引用(自己定义的类)所指对象的内容是否相同,需要在自己的类中重写equals()函数产生我们自己期望的结果。

原文地址:https://www.cnblogs.com/grj0011/p/4898916.html