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

2025-01-24 21:17:15
推荐回答(5个)
回答1:

有括号的话会先算括号里的,第一句先执行的是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了

回答2:

==的优先级比较低,而... ?... : ... 这样的三目运算符的优先级是最低的,因此你的第一个打印语句java就解释成:
dest.length() - dest.charAt(dest.length()-1) 运算出来 12-')'= 12- 41= -29 ( ')'的ascii码是41 )
然后比较-29==')'当然就不相等了,返回false,三目运算符就返0了

回答3:

这是由于运算符优先级导致的,“()”>“-”>“?”。
上面的打印语句先算出dest.length() - dest.charAt(dest.length()-1)==')'的值结果为false所以结果是0,而下面的打印先算出(dest.charAt(dest.length()-1)==')'?1:0)结果为1.,所以最终结果为12-1即为11。

回答4:

第一个没有括号的是长度减字符串,根本就不是一个类型,所以是假,得0,第二个你就明白了吧,先算括号里的,之长度相减

回答5:

就跟算数一样 有括号就先算括号里的
第一个是先 算出前面的数 最后 ==")" 比较结果是 0
第二个是 先比较晚了 然后 和前面的数运算 结果是 11