public class StringTest {
    public static void main(String[] args) {
        
        char[] char1 = new char[3];
        char[] char2 = new char[3];
        char1 = new char[]{'a','c','f'};
        char2 = new char[]{'a','c','f'};
        
        System.out.println(char1.equals(char2));
    }
}疯了啊  
两次发错地方 凭什么我这么笨啊
求前辈解释一下输出结果
这里20分
http://topic.csdn.net/u/20111103/17/238a571b-08e1-4d54-a22f-bf06d2d38994.html
这里30分
http://topic.csdn.net/u/20111103/17/655dd47b-3050-48ae-8311-7791a4dcd7ac.html
快哭了啊 

解决方案 »

  1.   

    char1 和 char2 是两个引用,分别指向两个不同的数组对象。这两个对象是不同的,所以equals得出false。
      

  2.   

    不是说==才比较地址的吗 

    public class StringTest {
    public static void main(String[] args) {
    String str1 = new String("jiangzu");
    String str2 = new String("jiangzu");
    System.out.println(str1.equals(str2));

    }
    }怎么就不比较地址了呢
    str1 就不是对象了么
      

  3.   

    这里的 equals 相当于 Object 的 equals,就是比较地址
    和 == 一样而楼主,你需要的是这个方法:
    Arrays.equals(char1, char2);
      

  4.   

    CHAR 又不是 STRING ~~
    STRING EQUALIS 是STRING类重写过的~~
    其他对象的EQUALIS 跟==一样
      

  5.   

    正解,Object 的equal是比较地址的,和 == 一样
    所有类都是继承Object的,有些类就重写了equals()方法,使得这些equals()方法不再是比较地址的,而是比较值,但是大多数类是没有重写equals()方法的。
    所以,重写equals()方法的类的对象调equals(),就是比较值的,
          没有重写equals()方法的类的对象调equals(),就是比较地址的