Java中i++,++i 和i= i+ 1的区别

【C++语言】彻底搞懂++i和i++ 目录 1 概念 2 前缀递增示例 2.1 示例代码 2.2 解题思路 3 后缀递增示例 3.1 示例代码 3.2 解题思路 4 混合表达式示例 4.1 示例代码 4.2 解题思路 1 概念 ++是单目运算符:++i是前缀递增,先参与表达式运算,然后再自增;i++是后缀递增,表示先进行递增,然后再参与表达式运算。 2 前缀递增示例 2.1 示例代码 #include<iostream> using namespace std; int main(int arg. 阅读详情
Java中i++,++i都表示 i = i+1

i++是先是使用 i的原值,然后再原值的基础上加1.

++i是先在原值的基础上加1,然后在使用i的值。

直接看一个示例:

public class Test1 {
	public static void main(String [] args){
		int i = 0,j;
		j = i++;      //i++ 先使用i的值,所以j = 0,然后执行i自增1,此时i等于1
		System.out.println("j = " + j+",i = "+i);
	}
}
Output:
j = 0 , i = 1


public class Test2 {
	public static void main(String [] args){
		int i = 0,j;
		j = ++i;  //++i 先执行i加1,此时i等于1,然后把i的值赋给j,j等于1
		System.out.println("j = " + j+",i = "+i);
	}
}
Output:
j = 1 , i = 1

上面两个例子都很好理解。
再看下面这两段代码:
public class Test3{
	public static void main(String[] args){
		int i = 0;
		for(int j = 0;j < 5; j++){
			i = i++;
			System.out.println("i =" + i);
		}
	}
}
本以为会输出:
 i = 0
 i = 1
 i = 2
 i = 3
 i = 4
可是实际上输出的是:
Output:
i = 0
i = 0
i = 0
i = 0
i = 0
可是为什么输出都是0呢????

再看 i = ++i 的情况:
public class Test {
	public static void main(String[] args){
		int i = 0;
		for(int j = 0;j < 5; j++){
			i = ++i;
			System.out.println("i =" + i);
		}
	}
}
Output:
i =1
i =2
i =3
i =4
i =5
因为Java采取了中间变量缓存机制!
在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是前缀加(++i),就会“先自加1后赋值(给临时变量)”;如果是后缀加(i++),就会“先赋值(给临时变量)后自加1”。运算最终使用的,并不是变量本身,而是被赋了值的临时变量。

如在Test3中:
 i = i + 1;
在内存中开辟空间,记录i的初始值0,同时开辟另一个临时变量的缓存空间,将i变量的临时值记录下来,随后i进行自增运算i = i+1,此时i = 1,覆盖原空间中的0,此时右边的运算才算完成, 随后进行赋值运算,即将temp的值赋给i,i又边长了0.


相当于:
int temp = i;  //先使用i的值
i  = i + 1;
i = temp;

在Test4中 i = ++ i 相当于:

i = i + 1;  //先自增1,再使用i的值
int temp = i;  
i = temp; 




GT-suite v2016的下载和安装 1 写在前面 GT-suite 是一款用来做内燃机仿真的软件。在安装过程中遇到很多问题,网上的安装教程也大都抄来抄去,试着安装了几遍都没有成功。最终在贴吧一个老哥的帖子里找到了解决办法,但是老哥的帖子也不是很详细,所以做了这个详细版本的教程。 GT-suite v2016安装包: 链接:https://pan.baidu.com/s/1JZPgJ8_-J-L8rV84-eHedQ 提取码:uj... 阅读详情

相关推荐

Halcon深度图转点云实战:从XYZ映射到3D可视化全解析

本文详细解析了如何使用Halcon将深度图转换为点云图,涵盖从XYZ映射到3D可视化的全流程。通过实战案例和代码示例,介绍了深度图预处理、xyz_to_object_model_3d核心转换及3D可视化技巧,适用于工业检测、三维重建等场景。

stem5的博客 766

i++和++i的区别,+i+是什么?

i++和++i的区别,以及+i+是什么情况?

ksx2333的博客 6224

量化风控核心:信用评分卡模型的设计与迭代全流程

◦ 动态策略适配:根据评分卡结果动态调整风控流程——高分用户(>750分)秒级放款,中低分用户(600-700分)触发补充资料提交,低分用户(<600分)直接拒绝。◦ 特征有效性监控:每月计算特征IV值,对IV<0.1的低效特征(如“用户星座”)进行淘汰,同时引入新特征(如电商消费数据)。某城商行通过增量学习,评分卡PSI值长期稳定在0.1以下。◦ 数据筛选:整合征信数据(逾期记录、查询次数)、行为数据(消费频次、还款习惯),某银行评分卡纳入150+维度特征,覆盖用户偿债能力、意愿、稳定性等维度;

2501_91651383的博客 1483

i++与i=i+1 一样吗可以互换吗

原文链接:https://zhidao.baidu.com/question/84652577.html?qbl=relate_question_6&word=short%20i%20%3D%201%3B%20i%20%3D%20i%201%B6%D4%C2%F0%2Cshort%20i%20%3D%201%3B%20i%20%3D%201%3B%B6%D4%C2%F0 在讲bai课时老师会说“i++是i=i+1的简略du形式”。不过很遗憾的告诉zhi你,不是任何时候都可以互换。 当一条语dao句只

此人很懒,什么都没有写 2317

Ubuntu登录界面黑屏?手把手教你排查和修复LightDM启动失败(附debug命令详解)

本文详细介绍了Ubuntu系统中LightDM(Light Display Manager)启动失败导致登录界面黑屏的排查与修复方法。通过系统状态检查、调试模式分析、常见故障解决方案及高级调试技巧,帮助用户快速定位并解决LightDM相关问题,恢复正常的图形登录环境。

weixin_34005090的博客 316

UE5入门第二周总结:基于蓝图的国际象棋的实现

在C++的学习中,这是一个入门级别的项目。我们的目标是灵活运用蓝图的特性和强大的可视化功能,做出这一入门级项目的同时,思考如何优化并改进算法,并尽可能的用面向对象的方法实现,用蓝图中的继承和多态简化编码过程。

YoungeYang的博客 1259

i=1,为什么 (++i)+(++i)=6?

源码#include "stdio.h" int main(void) { int i = 1; printf("%d\n",(++i)...

嵌入式Linux 6453

PCIe 互联的芯片-- P2P(Peer-to-Peer)

PCIe设备间支持P2P直连通信,但需满足硬件、固件和软件三方面条件。硬件需CPU/芯片组和PCIe交换器支持P2P,BIOS需开启相关设置,操作系统和驱动也要适配。消费级GPU通常禁用此功能,且PCIe P2P性能(128GB/s带宽)远低于NVLink(900GB/s)。常见限制包括ACS阻断、IOMMU隔离和带宽瓶颈。可通过nvidia-smi或NCCL测试验证P2P是否生效。该技术适合异构设备通信,但需注意配置调优。

MHD0815的博客 683

java中i++和++i和i=i+1的原理及区别

在java(或c语言,这里以java为主)里面,i++和++i对于初学者来说,一直是一个特别容易搞混的内容,特别是那种 i=i++ 或 i=++i 这种求 i 的值。不过今天不用怕,看完这篇文章,相信你一定能搞清楚这俩个的区别!i++和++i的作用都是自增加一,但是两者的返回结果却不一样的。为什么呢?这主要得益于java的中间缓存机制。

m0_56253302的博客 1179

【深度学习新浪潮】OpenClaw技术架构详解:从核心组件到生产级优化

OpenClaw 以三层解耦架构 + 四大核心模块为基础,实现了本地优先、易部署、易扩展、易优化的 AI 智能体平台。开发者可通过极简部署快速落地,再通过量化、缓存、并发、分布式等手段持续优化性能,适合从个人助理到企业级自动化的全场景应用。

专注:太空算力、AI infra、异构调度、大模型成本工程 2921

独家开源|RK3588 平台 YOLOv5 Android 源码级解析:NPU 量化、多线程与目标跟踪实战

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

m0_71589036的博客 193

【Java】i++、++i、i = i + 1 和 i += 1 的区别分析

目录第1部分 i++ 与 ++i 的区别第2部分 i++ (或者 ++i )与 i = i + 1 、 i += 1 的区别计算方式区别效率分析 第1部分 i++ 与 ++i 的区别 这两个的区别大部分人都知道,就简单提一下 i++ 是先进行赋值操作,后进行自增操作;而 ++i 是先进行自增操作,后进行赋值操作,举个栗子 int i = 1; int j; j = ++i; // 此时是先自...

Amadeus的博客 4388

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2584

反编译 i++ ,++i,i=i+1区别(修改)

1.(i++,++i)和i=i+1最大的区别 i++和++i使用的时iinc进行自增,i=i+1使用的是iadd操作栈顶和次栈顶元素进行相加 iinc操作的时局部变量表中的数据,iadd操作操作数栈中的数据。有疑问?就先带着疑问往下看 2.i++和++i的最大区别 i++是先把局部变量表的数据iload到栈顶,然后再进行iinc(操作数栈i=0,局部变量表i=1),++i是先对局部变量表...

以爱护甲,爱满枫林。 934

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java中5 的结果_【java中表达式10/4*5的结果为(B)。A.12.5B.10C.0.5D.12why6.设a=1,b=2,c=3计算表达式a+=c++/--b运行之后,a的值是(B)。A....

你想问什么?设a=1,b=2,c=3 计算表达式a+=c++/--b运行之后,a的值是4怎么获取的?我暂且当你问的是这个,如不是再追问。下面解答。这里有一个知识点,是说当一个变量自身进行相加,有几种方式,假设变量int i=0,要自增这个变量变为1有如下做法:i++++ii+=1这三种区别很重要,这样就知道最后的结果。前两种都是要先在内存开辟一块新空间,先自身相加在返回新空间值,只是前置(就是加号...

weixin_39981632的博客 465

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

i++,++i和i=i++的区别

i=++i,i=i++和i++的区别 1.i=i++与i=++i的区别:i=i++是先赋值再自加,i=++i是先自加再赋值。 如:       public static void main(String[] args) {         int i=0;         i=i++;         System.out.println(i);     } 运行结果为:

conviction_thinking的专栏 3047

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java中i++、++i、i--、--i 的含义和使用方法

1、java中i++、++i、i–、–i 的含义和使用方法。 ***1.1、i++的意思就是先把值赋值给等号左边的对象,然后再自增1.*** 首先定义两个参数i1=10,i2=20; 然后把i1++的值赋值给i。 然后输出i和i1的区别。 int i1 = 10; int i2 = 20; int i = i1++; syso(i); syso(i1); 结果为: i=10; a=11; ***1.2、++i的意思是先自增1,然后再赋值给等号左边的对象。*** 代码

weixin_42380472的博客 6301

i++和++i 和i+1的区别

大家对i++和++i肯定很熟悉,但是不理解其中深层次原因,就很难理解为什么(i+1)和(i++)会差这么多? 测试代码: 第一种:i+1      结论: 1 2 3 4 5 public class test { public static void main(String[] args) { for(int i=0; i<5; i++){ aa(i+1);

coding 1万+

深入理解Java中的i++、++i语句

在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,笔者专门测试了一下,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。

HinyLover的专栏 4万+

【Java】i++,++i与i+1的区别

1.首先记录i++与++i的区别:i++返回的是进行加法前的值,++i返回的是加法执行之后的值; int i=0; System.out.println("=== i++ 与 ++i ==="); while(i++<=9){ System.out.print(i+" "); } System.out.print("\n");

不想做菜鸟的小螃蟹 7233

【Java基础】i = i + 1,i += 1, i++, ++i 的区别

问题引入: 最开始是因为看到了一个题: ① short s1 = 1; s1 = s1 + 1; ② short s1 = 1; s1 += 1; 上面两条是否都可以成功编译? 答:① 中,由于 1 是 int 类型的,因此 s1 + 1 也是 int 类型的,需要进行强制类型转换,才能赋值给 short; ② 中,s1 += 1 就相当于 s1 = ((short)s1 + 1),+= 本身就隐含着强制类型转换,故可正确编译。 问题拓展: 上面涉及到了 += 和 s1 = s1 + 1 的区别,除了 +=

Code_Yilia的博客 1198

Java中i++,++i 的区别

Java中i++,++i都表示 +1操作; i++是先是使用 i的原值,然后再原值的基础上加1;++i是先在原值的基础上加1,然后在使用i的值。 直接上代码: public class Test0 { public static void main(String [] args){ int i = 0,j; j = i++; System.out.println(...

hyddhy的博客 453

从字节码的角度理解i++、++i和i++ + ++i

对于i++ + ++i来说,假设i=10,那么从前往后分析,i++即将i的值加1,i此时为11,但i++这个表达式的值是10,对于++i,也是将i的值加1,但此时i的值已经是11了,再加1的话是12,且整个表达式的值就是12,那么最终结果就是10+12=22。本文主要分析i++、++i和i++ + ++i的结果,这些也是面试题中最常考的,但有的读者可能总是记不住,原因就在于读者未能深入到字节码层面做进一步的研究,本文将从字节码的角度探索此类语法的奥秘。再来分析++b,对应字节码的第8到第15行。

学无止境! 1634

【Java】深入理解i++、++i

Java虚拟机的栈帧(局部变量表、操作数栈、动态链接、方法返回地址) Java虚拟机字节码指令,iconst_、istore_、iload_、iinc ,

zxcyxg123的博客 1596

java中i+=2什么意思_深入理解Java中的i++、++i语句

在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,笔者专门测试了一下,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。int i = 0; int j1 = i++; // 正确 int j2 = ++i; /...

weixin_28862113的博客 6107

关于i++,++i与i+=1的性能

曾经写代码测试,估计也有不少人做过这种傻事,最终“测不准”,从内部着手分析吧。1.对于int i=0;,表达式 1)i++ 2)++i 3)i+=1 本身没什么区别,最终都编译成"iinc 1,1" 使用i变量时: --------------- i++; --------------- iload iinc    1, 1 --------------- ++i ----------

红流 2703
上一篇: 判断是否为素数的另一种解法
下一篇: Java中的基础知识点
billion_Fu
博客等级 码龄9年 3粉丝 7原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值