【问题标题】:What does <+ mean in Java? [closed]<+ 在 Java 中是什么意思? [关闭]
【发布时间】:2019-09-29 17:53:15
【问题描述】:

我正在编写一些东西,我正在制作一个小于或等于运算符,我正要按下等号,但我不小心按住了 Shift 键,所以它变成了一个加号。它做到了:

我尝试在网上查找它,但我并没有真正看到任何关于它的信息

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

我认为它会给我一个错误或什么的。

【问题讨论】:

  • 我认为这是一个粗心大意的加分,它什么也没做。另一个运算符只是一个小于比较。
  • 该代码 100% 等同于 if (Integer.toString(data.getPhoneNumber()).length() &lt; 10),没有 +。加号什么都不做
  • 它将电话号码的长度与+10进行比较,熟悉的称为10。有一个list of Java operators
  • @luk2302 Re“这不是一个好问题.... 很明显运营商在这里实际做了什么”,可能是对你来说很明显,但对初学者来说肯定不一定很明显。
  • 好吧,虽然很容易研究运算符列表,但我猜 OP 没有意识到一元 +,因为他在运算符列表中明确搜索 &lt;+。由于我们在这里没有任何重复,其他人可能会遇到同样的问题,我认为扩展这个站点的问答存储库是一个很好的问题。我们有一个值得保留的好答案。

标签: java bitwise-operators operator-keyword


【解决方案1】:

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

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

这是

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

因为一元 + 在应用于 int 时不会执行任何操作(10 在该代码中是 int)。

来自JLS§15.15.3

15.15.3。一元加号运算符+

一元 + 运算符的操作数表达式的类型必须是可转换(第 5.1.8 节)为基本数值类型的类型,否则会发生编译时错误。

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

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

(他们的重点)

【讨论】:

  • 小注释扩展答案:首先存在的原因是明确强调文字是 positive 而不是 negative +10-10。虽然它可能相当混乱,但您应该只使用10
【解决方案2】:

在这种情况下,+ 运算符简单地指定数字 10 为正数:+10,因为 - 表示该数为负数:-10。不管是远离它还是靠近它都没有关系:+ 10,与+10相同。 但由于没有 -(减号)符号的数字默认为正数,因此不需要 + 号。

如果是这样的减号:

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

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

【讨论】:

  • “这对于电话号码没有意义。” 或者实际上任何“长度”具有传统意义上的含义! ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 2010-12-29
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多