首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试官:【int i = 6; i += i - 1; 】i 等于什么?

表达式解析:i += i - 1; 这一行等价于 i = i + (i - 1);。i - 1:当前 i 的值是 6,因此 i - 1 计算结果为 6 - 1 = 5。...Java 是一种严格从左到右求值的语言,这意味着:当执行 i += i - 1; 时,右侧表达式 i - 1 首先被计算,然后将结果赋值给 i。...具体来说,i - 1 的值是基于 i 的当前值来计算的,而这个计算过程不会影响当前 i 的值。详细过程:第一步:i 的初始值为 6。第二步:先计算 i - 1。...变量和赋值机制Java 的赋值机制是右结合的在 i += i - 1; 中,表达式右侧 i - 1 的计算先于赋值进行。...延迟赋值:在表达式 i += i - 1 中,只有在 i + (i - 1) 的所有计算完成之后,结果 11 才会被赋值给 i。

29320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    你真的了解 i++, ++i 和 i+++++i 以及 i+++i++ 吗?

    本文字数:2355字 阅读本文大概需要:6 分钟 我想大部分都知道 i++ 和 ++i的区别,i++ 就是先拿i来使用,之后再自增加1,而++i则是先自增加1,在拿i来使用,例如对于下面这两个语句,...我敢保证大部分人都会做: int i = 1; System.out.println(i++) int i = 1; System.out.println(++1) 答案分别为 1,2。...“1”的变量加1,即把 i 加1。...所以虽然i已经等于2了,但此时栈顶的元素却是i之前的值 1 ,所以打印的是1。 这下关于 i ++ 的懂了吧? 那我们来看看 ++ i 与 i ++ 的汇编指令有什么不同。...int i = 1; System.out.println(++i); 对应的部分重点汇编指令如下: //和上面i++差不多,不过IINC 1 1 和ILOAD 1这两句的顺序调换了。

    3K20

    I + I2C = I3C:这个附加的“I”是什么?

    MIPI 联盟2018年发布了 I3C(发音为“eye-three-see”)总线规范的第 1 版,这应该是对长期存在的 I2C 和 SPI 协议的改进。...: 1、sensor等设备的增加,对控制总线的速度和功耗提出了更加严苛的要求; 2、虽然I2C是一种2线接口,但是往往此类device需要额外增加一条中断INT信号线; 处于解决上述问题的原因,推出了I3C...I3C的应用场景 从上图中我们可以看到: 1、I3C总线可以应用在各种sensor中; 2、可以使用在任何传统的I2C/SPI/UART等接口的设备中。...从上图中我们可以将特性具体一下: 1、I3C总线可以支持multi-master即多主设备 2、I3C总线与传统的I2C设备仍然是兼容的 3、可以支持软中断 4、相比较于I2C总线的功耗更低 5、速度更快...其中支持设备的具体类型有: 1、I3C主设备 SDR-only master 2、I3C secondary MASTER SDR-only secondary master(注意是slave of main

    2.4K20

    漫画:奇怪,为什么在Java中 2*(i*i) 比 2*i*i 快?

    但是如果你把 2*i*i 替换成 2*(i*i),执行时间大概在 0.50s ~ 0.55s。 对这段程序的两个版本分别执行 15 次,得到的结果如下。...我们可以看出 2*(i*i) 比 2*i*i 快 。 我们来分别查看它的字节码,这里东哥给我推荐了一款好用的 IDEA 插件,叫做 jclasslib bytecode viewer。...2*i*i 的字节码如下。 2*(i*i) 的字节码如下。 我们可以发现除了字节码顺序不同外,没有其它异常,下一步该怎么办呢?...我这里就说一下结论,通过对比分析,我们会发现,2*i*i 进行了大量的堆栈操作,因此,需要保存大量的中间结果;而 2*(i*i) 只有少量的堆栈操作。...显而易见,2*(i*i) 比 2*i*i 快是由于 JIT 优化的结果。 -END-

    79820

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券