cannot convert from boolean to String

Jamesmack 2008-06-30 04:16:32
1 String str1 = "Haha" + true == false + "heihei";
2 String str2 = "Haha" + true == false;
3 boolean b = "Haha" + true == false + "heihei";

为什么1,2两句都有错误,而3却是正确的,JAVA中语句是按什么样解析顺序来解析的?
...全文
696 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhaiyang 2008-06-30
  • 打赏
  • 举报
回复
优先级不一样
adrain_sengtang 2008-06-30
  • 打赏
  • 举报
回复
这个问题主要
1、+的优先级高于==
2、String类型与boolean进行+运算,会自动调用Boolean.toString()
结果将是String类型
3、不能直接将Boolean类型转换为String类型
ldy214 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bestaone 的回复:]
1 String str1 = "Haha" + true == false + "heihei";
2 String str2 = "Haha" + true == false;
3 boolean b = "Haha" + true == false + "heihei";

相当与
1 String str1 = ("Haha" + true) == (false + "heihei");
("Haha" + true) == (false + "heihei")左右两边都是String可以比较,但比较结果为boolean,所以出错

2 String str2 = ("Haha" + true) == false;
("Haha" + true)强制转换为…
[/Quote]

正解
qusic 2008-06-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bestaone 的回复:]
1  String str1 = "Haha" + true == false + "heihei";
2  String str2 = "Haha" + true == false;
3  boolean b = "Haha" + true == false + "heihei";

相当与
1  String str1 = ("Haha" + true) == (false + "heihei");
("Haha" + true) == (false + "heihei")左右两边都是String可以比较,但比较结果为boolean,所以出错

2  String str2 = ("Haha" + true) == false;
("Haha" + true)强制转换为String…
[/Quote]
完全分析好了~
MagicianLiu 2008-06-30
  • 打赏
  • 举报
回复
运算符优先级的问题。。
==运算符比+低
所以头两句相当于String s = false;所以肯定报错
但String s = false+"";不会报错。
其实这个是JDK1.5以后的自动拆箱装箱功能,即将基本数据类型与对象进行转换
例如String s = false+""相当于 String s = Boolean.toString(false)+"";
JDK1.5之前,没有自动拆箱装箱功能,必须写第二种写法

以上是装箱的例子,下面是拆箱的例子
int i = new Integer(1)+2;
lisl2003 2008-06-30
  • 打赏
  • 举报
回复
不能把boolean型转成string。(boolean值也不能与整型进行相互转化。)

语法的问题,至于到底是为什么,偶也不知。
码道功臣 2008-06-30
  • 打赏
  • 举报
回复
1 String str1 = "Haha" + true == false + "heihei";
2 String str2 = "Haha" + true == false;
3 boolean b = "Haha" + true == false + "heihei";

相当与
1 String str1 = ("Haha" + true) == (false + "heihei");
("Haha" + true) == (false + "heihei")左右两边都是String可以比较,但比较结果为boolean,所以出错

2 String str2 = ("Haha" + true) == false;
("Haha" + true)强制转换为String类型,与boolean比较所以出错

3 boolean b = ("Haha" + true) == (false + "heihei");
这完全符合java语法。
lisl2003 2008-06-30
  • 打赏
  • 举报
回复
不能把boolean型转成string?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧