Java: 隐性赋值(Implicit Assignment)
初学 Java 时,我总是记不住如何区别 i++ 和 ++i。在《算法(第四版)》一书中第16页,作者提到:
** ++i ** is the same as i = i+1, and has the value i+1 in an expression. The code ** i++ ** is the same except that the expression value is taken ** before ** the increment, ** not after **.
即,
i++ 在表达式中使用的时候,该表达式的值取的是 ++ ** 之前的 i ** 的值。
++i,则相反,表达式的值取的是 ++ ** 之后 的 i ** 的值。
这里要注意区分两个值:
1。i 的 值
2。表达式(i++ 或 ++i) 的值
无论 表达式是 i++ 或 ++i, i 的值都是增加 1, 而表达式的值则不一定。
让我们来看一下代码:++i
int i=0;
for (int j=0; j<2; j++){
System.out.println("before: i = "+ i);
System.out.println("++ i = " + (++i));
System.out.println("after: i = "+ i);
}
运行后的结果:表达式的值取得是 当前 i 的值 加 1
before: i = 0
++ i = 1
after: i = 1
before: i = 1
++ i = 2
after: i = 2
再试一下 ++i:
int i=0;
for (int j=0; j<2; j++){
System.out.println("before: i = "+ i);
System.out.println("i ++ = " + (i++));
System.out.println("after: i = "+ i);
}
运行后的结果:表达式的值取得是当前的 i 的 值。
before: i = 0
i ++ = 0
after: i = 1
before: i = 1
i ++ = 1
after: i = 2
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp