Java : 踩过这个坑没?

2019-06-12 20:41:30 +08:00
 oska117
String a = "a";

String b = "b";

String c = a + "_" + b==null?"":b;

上面的代码我一直以为 c 会返回 "a_b"

实际上却返回的是 "b" (+运算符优先级高于三目)

为啥我一直觉得 这样写没问题呢?

关键是我同事也有这种错觉。

6497 次点击
所在节点    程序员
68 条回复
jinksw
2019-06-13 10:10:05 +08:00
遇到过这个问题 一下就记住了 遇到之前 跟你想的一样 😆
szq8014
2019-06-13 10:10:34 +08:00
这并不是坑,而是脑子有泡
ctsua
2019-06-13 10:14:46 +08:00
不就是个三目吗
Banxiaozhuan
2019-06-13 10:20:00 +08:00
小学生?
ipwx
2019-06-13 10:30:00 +08:00
不同优先级的运算符混用永远加括号。小学生都会的操作。。。
tonyli
2019-06-13 10:41:17 +08:00
就是 b 啊,没毛病啊!
ruok
2019-06-13 10:43:03 +08:00
iccfish
2019-06-13 10:48:03 +08:00
这算啥坑,这是自己不懂吧。
FrankHB
2019-06-13 13:17:49 +08:00
当优先级这种智熄设计遇到了 zz 用户就是这样个下场……
被幼稚园数学毒害的中缀破烂语法扔了哪来那么多破事。
matthewxu123
2019-06-13 13:24:09 +08:00
初级题
beidounanxizi
2019-06-13 13:25:03 +08:00
go 就摒弃了这点
zsy979
2019-06-13 13:29:16 +08:00
为什么会以为是 "a_b"呢?
pmispig
2019-06-13 14:43:31 +08:00
写这种代码的人还是早点开除吧
jamesliu96
2019-06-13 14:47:43 +08:00
佛了,返校重修吧
fxplay
2019-06-13 15:03:28 +08:00
@zsy979
他想的应该是这样的。
String a = "a";

String b = "b";

String c = a + "_" +( b==null?"":b);
IllllI
2019-06-13 16:23:42 +08:00
你这写的就是 B 你想表达什么 直说
sesmond
2019-06-13 16:32:38 +08:00
我想说加个括号会 X 吗
KannaMakino
2019-06-13 18:10:44 +08:00
还好吧,不过这么写有毒
way2create
2019-06-13 18:23:21 +08:00
...这种不叫坑吧 就是运算符优先级的问题,只能说基础不牢又不爱加括号了,我也经常忘,所以我加括号
flyingghost
2019-06-13 18:31:53 +08:00
说实话,这个“坑”字的定义有问题。
坑,常用来描述反常理的,有 bug 的,太 trick 绝大多数人都不知道的旮旯。之所以是坑,就是绝大多数人都会掉进去。
而运算符优先级,既是常理,又没 bug,也一点 trick 都没有。这不是坑,这是基础知识存在盲点,是个人问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/573341

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX