A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 言钟钟 中级黑马   /  2014-9-3 14:46  /  2541 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 言钟钟 于 2014-9-3 15:31 编辑

System.out.println("p1是否和p2相等:"+p1==p2);这条语句报错额  Incompatible operand types String and Person1  难道这时候“+”会被认为加  

5 个回复

倒序浏览
你这个P1和P2如果不管都是对象还都是String类型的最好用 System.out.println("p1是否和p2相等:"+(p1.equals(p2)))
回复 使用道具 举报
泥土知识 发表于 2014-9-3 15:01
你这个P1和P2如果不管都是对象还都是String类型的最好用 System.out.println("p1是否和p2相等:"+(p1.equals ...

System.out.println(p1.equals(q2))当然是不会有问题的,只是突然想到+何时会被看为连接符,何时又会被看为加   而且System.out.println("p1是否和p2相等:"+(p1+p2))也可以
回复 使用道具 举报
+两边都是int的时候表示 加       +两边都是String或是对象时是连接  
回复 使用道具 举报
泥土知识 发表于 2014-9-3 15:20
+两边都是int的时候表示 加       +两边都是String或是对象时是连接

哦 懂了  谢谢!
回复 使用道具 举报
本帖最后由 shdosh 于 2015-8-18 22:43 编辑

你这个语句中存在运算符优先级的问题,你的这个System.out.println("p1是否和p2相等:"+p1==p2);是("p1是否和p2相等:")字符串,先和p1通过“+”组成字符串,然后才与p2进行比较是否相等,当p2不是字符串类型时会出现“不可比较的类型错误。”
拿整型举例如图:
C:\Users\东生\Desktop\比较2.PNG
C:\Users\东生\Desktop\比较.PNG
你可以在p1==p2两端加小括号(p1==p2),因为括号运算符的优先级比较高,会先运算==再拼接成字符串。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马