额,java基础问题求助 System.out.print(‘a'.equals(‘a') ); 上面这句代码报错,是否说明java中不允许用字符的字面值表示一个字符对象? 那下面这句代码为什么是对的,equals method中的参数类型不是Character吗? 参数可以用一个字符字面值表示一个字符对象? System.out.print( new Character(‘a').equals(‘a') ); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.out.print( new Character('a').equals("a") ); System.out.print("a".equals("a") );引号的全角和半角问题,用英文的引号不会出错! 字符对象是用"这个来括起来'这个括起来的是表示基本类型char System.out.print("a".equals("a"));System.out.print(new Character('a').equals('a'));顶3楼!!! System.out.print(‘a'.equals(‘a') ); 这个表是的是用char类型去比较的 而char类型不是对象类型 是没的equals方法的 所以报错。System.out.print( new Character(‘a').equals(‘a') ); Character为char的包装类,是对象类型故不会报错。 楼主一定是跟String弄浑了吧,String确实可以用"abc".equals("abc"),因为String不是原生数据,实际上一个字符串本身就是一个引用了,而char是原生数据也就是基本数据类型,不能直接调方法,只能new成对象再调用 额 ,呵呵,我恰是知道String可以的,所以相试一下字符,发现不可以,只是参数那儿应该是Character类型啊,怎么传递字符也行呢?。 求解释 char类型自动打包为对应的包装类Character了,楼主先弄懂什么是自动打包就会理解了。 请参考object的equals方法说明,equals所比较的是两个对象!System.out.print(new Character('a').equals('a'));上面这句为什么不报错,是因为,new Character('a')是个字符对象,其值为a,则equals中的参数'a',请debug,这个'a',jvm当做字符串解释,即String a = "'a'"; 哦, sorry,请无视我上面后半段的屁话。public boolean equals(Object obj)将此对象与指定对象比较。当且仅当参数不是 null,而是一个与此对象包含相同 char 值的 Character 对象时,结果才是 true。 覆盖:类 Object 中的 equals参数:obj - 比较的对象。 准确讲是调用了Character 的equals 参数可以直接用'a',就是jdk1.5以后自动拆箱的原理 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”不是基本类型的数据,所以编译的时候会自动封装成对象,而对象调用其自身的方法当然没有错误了! 从jdk1.5开始提供自动装箱功能, 将 'a'.equals('a') 改成 char c = 'a'; c.equals('a');也是正确的,因为jdk1.5以后会自动将 c 包装成一个对象;而对象调用其方法当然是可以的了,呵呵 java有自动装箱的机制啊 原生类型的变量都可以自动装箱。所以你传参数的时候char就装成Character了 用单引号,括起来的单个字符是基本数据类型,用==比较就可以了。用双引号括起来的多个字符时,是字符串,不是基本类型,属于对象了,所以必须用equals比较。Character类型是把字符这个基本类型封装了,也就成对象了。所以必须用equals比较。 1S内写出答案 请问,final变量和final类存储在哪里? 双向回环链表的实现. 怎么写, Java基础的一道编程题. 将3个Button,然后用setBound设置按钮为纵向排放,用什么方法??放到一个jPanle 哪位大大有lumaqq的源代码,能发一份给我吗? clone问题! 问:如何让系统在后台自动启动TOMCAT 5.0?(winxp Pro) 怎样去掉连接下面的线呢?(续) about java&&Tdg.net 请教 thread 异常 继承的问题
System.out.print("a".equals("a") );引号的全角和半角问题,用英文的引号不会出错!
'这个括起来的是表示基本类型char
System.out.print("a".equals("a"));
System.out.print(new Character('a').equals('a'));顶3楼!!!
System.out.print( new Character(‘a').equals(‘a') ); Character为char的包装类,是对象类型故不会报错。
额 ,呵呵,我恰是知道String可以的,所以相试一下字符,发现不可以,只是参数那儿应该是Character类型啊,怎么传递字符也行呢?。
求解释
System.out.print(new Character('a').equals('a'));
上面这句为什么不报错,是因为,new Character('a')是个字符对象,其值为a,则equals中的参数'a',请debug,这个'a',jvm当做字符串解释,即String a = "'a'";
public boolean equals(Object obj)将此对象与指定对象比较。当且仅当参数不是 null,而是一个与此对象包含相同 char 值的 Character 对象时,结果才是 true。 覆盖:
类 Object 中的 equals
参数:
obj - 比较的对象。 准确讲是调用了Character 的equals
浮点型 float double
逻辑型 boolean(它只有两个值可取true false) 字符型 char char是基本类型的数据,而String不是基本的数据类型,所以jdk会自动装配成String类的对象;另外只有对象才可以调用其方法。
'a'.equals('a') :这句的'a'是基本类型不是对象,所以不能调用equals()方法;
new Character(‘a').equals(‘a') :这是对象调用其自身的方法当然是正确的;
“a”.equals('a') :也是正确的,“a”不是基本类型的数据,所以编译的时候会自动封装成对象,而对象调用其自身的方法当然没有错误了!
从jdk1.5开始提供自动装箱功能,
将
'a'.equals('a')
改成
char c = 'a'; c.equals('a');也是正确的,因为jdk1.5以后会自动将 c 包装成一个对象;而对象调用其方法当然是可以的了,呵呵
用双引号括起来的多个字符时,是字符串,不是基本类型,属于对象了,所以必须用equals比较。Character类型是把字符这个基本类型封装了,也就成对象了。所以必须用equals比较。