System.out.print(‘a'.equals(‘a') );  上面这句代码报错,是否说明java中不允许用字符的字面值表示一个字符对象?
  
   那下面这句代码为什么是对的,equals method中的参数类型不是Character吗?
   参数可以用一个字符字面值表示一个字符对象?
  
   System.out.print( new Character(‘a').equals(‘a') );
  
    

解决方案 »

  1.   

            System.out.print( new Character('a').equals("a") );
            System.out.print("a".equals("a") );引号的全角和半角问题,用英文的引号不会出错!
      

  2.   

    字符对象是用"这个来括起来
    '这个括起来的是表示基本类型char
      

  3.   


    System.out.print("a".equals("a"));
    System.out.print(new Character('a').equals('a'));顶3楼!!!
      

  4.   

    System.out.print(‘a'.equals(‘a') );  这个表是的是用char类型去比较的  而char类型不是对象类型  是没的equals方法的  所以报错。
    System.out.print( new Character(‘a').equals(‘a') ); Character为char的包装类,是对象类型故不会报错。
      

  5.   

    楼主一定是跟String弄浑了吧,String确实可以用"abc".equals("abc"),因为String不是原生数据,实际上一个字符串本身就是一个引用了,而char是原生数据也就是基本数据类型,不能直接调方法,只能new成对象再调用
      

  6.   


    额 ,呵呵,我恰是知道String可以的,所以相试一下字符,发现不可以,只是参数那儿应该是Character类型啊,怎么传递字符也行呢?。
      
      求解释
      

  7.   

    char类型自动打包为对应的包装类Character了,楼主先弄懂什么是自动打包就会理解了。
      

  8.   

    请参考object的equals方法说明,equals所比较的是两个对象!
    System.out.print(new Character('a').equals('a'));
    上面这句为什么不报错,是因为,new Character('a')是个字符对象,其值为a,则equals中的参数'a',请debug,这个'a',jvm当做字符串解释,即String a = "'a'";
      

  9.   

    哦, sorry,请无视我上面后半段的屁话。
    public boolean equals(Object obj)将此对象与指定对象比较。当且仅当参数不是 null,而是一个与此对象包含相同 char 值的 Character 对象时,结果才是 true。 覆盖:
    类 Object 中的 equals
    参数:
    obj - 比较的对象。 准确讲是调用了Character 的equals
      

  10.   

    参数可以直接用'a',就是jdk1.5以后自动拆箱的原理
      

  11.   

    java四类八种基本数据类型   整型       byte short  int long 
                               浮点型     float double
                                
                               逻辑型     boolean(它只有两个值可取true false)                           字符型     char char是基本类型的数据,而String不是基本的数据类型,所以jdk会自动装配成String类的对象;另外只有对象才可以调用其方法。
         'a'.equals('a') :这句的'a'是基本类型不是对象,所以不能调用equals()方法;
         new Character(‘a').equals(‘a') :这是对象调用其自身的方法当然是正确的;
        “a”.equals('a') :也是正确的,“a”不是基本类型的数据,所以编译的时候会自动封装成对象,而对象调用其自身的方法当然没有错误了!
      

  12.   


    从jdk1.5开始提供自动装箱功能,
        将 
           'a'.equals('a') 
       改成
          char c = 'a';   c.equals('a');也是正确的,因为jdk1.5以后会自动将 c 包装成一个对象;而对象调用其方法当然是可以的了,呵呵
      

  13.   

    java有自动装箱的机制啊 原生类型的变量都可以自动装箱。所以你传参数的时候char就装成Character了
      

  14.   

    用单引号,括起来的单个字符是基本数据类型,用==比较就可以了。
    用双引号括起来的多个字符时,是字符串,不是基本类型,属于对象了,所以必须用equals比较。Character类型是把字符这个基本类型封装了,也就成对象了。所以必须用equals比较。