黑马程序员技术交流社区

标题: 新手提一个小小的问题 [打印本页]

作者: 言钟钟    时间: 2014-9-3 14:46
标题: 新手提一个小小的问题
本帖最后由 言钟钟 于 2014-9-3 15:31 编辑

System.out.println("p1是否和p2相等:"+p1==p2);这条语句报错额  Incompatible operand types String and Person1  难道这时候“+”会被认为加  
作者: 泥土知识    时间: 2014-9-3 15:01
你这个P1和P2如果不管都是对象还都是String类型的最好用 System.out.println("p1是否和p2相等:"+(p1.equals(p2)))
作者: 言钟钟    时间: 2014-9-3 15:09
泥土知识 发表于 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))也可以
作者: 泥土知识    时间: 2014-9-3 15:20
+两边都是int的时候表示 加       +两边都是String或是对象时是连接  
作者: 言钟钟    时间: 2014-9-3 15:30
泥土知识 发表于 2014-9-3 15:20
+两边都是int的时候表示 加       +两边都是String或是对象时是连接

哦 懂了  谢谢!
作者: shdosh    时间: 2015-8-18 22:41
本帖最后由 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),因为括号运算符的优先级比较高,会先运算==再拼接成字符串。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2