当前位置: 首页 > 面试题库 >

关于Postfix Increment Operator ++的澄清:java

燕和裕
2023-03-14
问题内容
int i = 0;
boolean b = true;
System.out.println(b && !(i++ > 0))

当我编译上面的代码时,我得到一个真值。

但是那怎么可能呢,因为参数的第二部分(因为b已经是真的)基本上转化为

(0 + 1 > 0) => (1 > 0)

应该返回true。那么该语句将true && falsefalse

我想念什么?


问题答案:

Java行为正确:)

i++

那就是 后缀 增量。

它生成结果,然后再增加该值。

!(i++ > 0) // now  value is still zero

i++将使用之前valuei,然后使用increment它。

当您使用++时,就像

temp=i;
i += 1; 
i=temp;     // here old value of i.

Postfix Increment Operator
++上的语言规范

将值1加到变量的值上,然后将总和存储回变量中。......

后缀增量表达式的值是存储新值之前的变量值。

可能的解决方案++i是,根据您的要求,

前缀增量运算符++

前缀增量表达式的值是存储新值之后的变量的值。



 类似资料:
  • 我正在尝试使用OpenNLP。我需要它从新闻网站(例如:techcrunch)获得新的组织(初创公司)。我有一个组织模型,我用它来识别出版物中的组织(en-ner-organization)。我有一个问题: 如果有一个关于新的初创公司的出版物,它是昨天诞生的,openNlp会承认它是组织吗? 据我所知-没有。直到我不在这个新的初创公司训练模特,对吧?

  • 从文件导入证书时SSL握手失败的后续问题 在该链接中,使用第三方证书时SSL握手失败。 我对此表示怀疑。 一旦服务器向客户端颁发了包含公钥的证书,客户端是否使用服务器的公钥对每条消息进行编码?

  • 不过,我真的很想弄明白这套房产的目的是什么。我去了Android的文档,里面说: 定义如果填充不为零,则ViewGroup是否将剪辑其子级并将任何EdgeEffect的大小调整到填充中(但不剪辑)。默认情况下,此属性设置为true。 我已经读了很多次,我在网上找了一些例子,但我真的没有找到一些。我发现的唯一的视觉效果与这个ClipToPadding差异类似

  • 我的应用程序目前使用一个后台服务与一个物理设备进行通信(蓝牙)。(我制造并销售物理设备。)应用程序每500ms向设备发送一条命令。用户启动这个进程,它必须运行,直到用户停止它。当应用程序处于活动状态时,进程的结果将发送到应用程序。这个过程需要运行,即使应用程序不是活动的。(例如,他们打电话,搜索网络。)一旦应用程序再次激活,进程的状态将与应用程序同步。该过程可以在任何地方运行,从几分钟到几个小时不

  • 现在,编辑器在使用注释方法的地方显示警告。然后显示使用的建议。当我接受它的更改时,它会将代码转换为此,警告消失。 使用有意义吗? 实现是 所以如果为空,我的代码仍然会崩溃。 我们应该对此进行空检查。 我认为比好,你说呢?如果是,则编辑器不应建议在此处使用。 因为在具有状态(如)的字段中使用要求NonNull是不安全的。我是否错过了的一些好处?

  • 我很难清楚地理解MySQL5.6使用/r/t memcache引入了什么。 按照我的理解,memcache本身本质上是一个巨大的、共享的、驻留内存的哈希表,由服务器memcached管理。特别是,它对持久数据存储一无所知,也不提供这方面的服务。它只知道键和值(像Perl散列)。 我认为MySQL5.6引入的是NoSQL API,mySQL客户端可以通过键而不是通过SELECT语句从mySQL服务器