在Java中,<+是什么意思?

8

我在编程时,想写一个小于等于的运算符,但当我按等于号时,不小心按住了Shift键,结果打出了加号。这样就生成了 <+ 这个符号。IntelliJ并没有报错,所以我想知道 <+ 表示什么。

我尝试在网上搜索,但没有找到相关信息。

if (Integer.toString(data.getPhoneNumber()).length() <+ 10)

我以为它会给我一个错误或其他什么东西。


3
我认为这是一个无意义的加号,它没有任何作用。另一个运算符将只是一个小于比较。 - van dench
2
那段代码与 if (Integer.toString(data.getPhoneNumber()).length() < 10) 完全等价,只是没有加上 +。这个加号 没有任何作用 - luk2302
2
它将电话号码的长度与“+10”进行比较,这在熟人中被称为“10”。这里有一个Java运算符列表。 - Dave Newton
1
@rm-rfstar,不,这不是一个好问题。Java操作符的列表已经非常明确定义了。这里操作符实际上要做什么是显而易见的。而且,就算未来用户搜索/查找此问题也会无法找到。 - luk2302
1
一个非常糟糕格式的代码的很好的例子。 - Eugene
显示剩余2条评论
2个回答

24

只是间距让它看起来特别。这是更传统的间距:

if (Integer.toString(data.getPhoneNumber()).length() < +10)

就是

if (Integer.toString(data.getPhoneNumber()).length() < 10)

因为在这段代码中,一元运算符+应用于一个int(其中10int)时不起作用。

参见JLS§15.15.3

15.15.3. 一元加号运算符 +

一元+运算符的操作数表达式的类型必须是可转换(§5.1.8)为原始数字类型之一,否则会导致编译时错误。

对操作数执行一元数字提升(§5.6.1)。一元加号表达式的类型是操作数的晋升类型。即使操作数表达式的结果是变量,一元加号表达式的结果也不是变量,而是值。

在运行时,一元加号表达式的值是操作数的晋升值。

(他们强调)


小提示:为了明确强调字面值是正数而不是负数,才会出现这种情况,例如+10-10。虽然这可能相当令人困惑,你应该坚持使用10 - Zabuzard

1
在这种情况下,+运算符仅指定数字10为正数:+10,而-表示它为负数:-10。无论数字离它远或近,如+10和+ 10是相同的,不会影响结果。
但由于没有减号的数字默认为正数,因此在这里不需要使用+号。小于号运算符不会注意到+号,因为它知道它属于那个正数。
如果是这样的负数:
if (Integer.toString(data.getPhoneNumber()).length() < -10)

然后程序将比较电话号码的length(),以查看它是否小于负10,这对于电话号码的长度来说是没有意义的。


“这对于电话号码来说没有意义。”或者任何‘长度’具有传统理解含义的情况下都是如此!;-) - user10762593

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接