Java在计算字符串长度的时候遇到问题,不是很明白。 想请教大家。

[复制链接]
查看11 | 回复5 | 2011-10-17 12:00:30 | 显示全部楼层 |阅读模式
有括号的话会先算括号里的,第一句先执行的是dest.length() - dest.charAt(dest.length()-1)==')'而这句中的执行顺序是先执行dest.length() - dest.charAt(dest.length()-1),然后在执行==')',返回指为false,那么再执行?1:0自然就返回0了;而第二句是先执行(dest.charAt(dest.length()-1)==')'?1:0),然后用dest.length()减去所返回的指,自然就是12-1 = 11了...
回复

使用道具 举报

千问 | 2011-10-17 12:00:30 | 显示全部楼层
==的优先级比较低,而... ?... : ... 这样的三目运算符的优先级是最低的,因此你的第一个打印语句java就解释成:dest.length() - dest.charAt(dest.length()-1) 运算出来 12-')'=12- 41= -29 ( ')'的ascii码是41 )然后比较-29==')'当然就不相等了,返回false...
回复

使用道具 举报

千问 | 2011-10-17 12:00:30 | 显示全部楼层
这是由于运算符优先级导致的,“()”>“-”>“?”。上面的打印语句先算出dest.length() - dest.charAt(dest.length()-1)==')'的值结果为false所以结果是0,而下面的打印先算出(dest.charAt(dest.length()-1)==')'?1:0)结果为1.,所以最终结果为12-1即为11。...
回复

使用道具 举报

千问 | 2011-10-17 12:00:30 | 显示全部楼层
第一个没有括号的是长度减字符串,根本就不是一个类型,所以是假,得0,第二个你就明白了吧,先算括号里的,之长度相减...
回复

使用道具 举报

千问 | 2011-10-17 12:00:30 | 显示全部楼层
就跟算数一样 有括号就先算括号里的第一个是先 算出前面的数 最后 ==")" 比较结果是 0第二个是 先比较晚了 然后 和前面的数运算 结果是 11...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行