java中的前++和后++的区别示例代码详解
作者:冷囧囧 发布时间:2023-09-01 10:15:01
java中的前加加++和后加加++,有很多人搞的很晕,不太明白!今天我举几个例子说明下前++和后++的区别!
其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加!
前++和后++总结:其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加!
请大家看下面的例子就明白了!
public class Test {
public static void main(String[] args) {
//测试,前加加和后加加
//前++和后++总结:其实大家只要记住一句话就可以了,前++是先自加再使用而后++是先使用再自加!
int age = 6;
//先自加,再使用(age先自加1,然后再打印age=7,此时age的值在内存中是7)
System.out.println("age=" + ++age);
//先使用,再自加(此时age的值在内存中是7,先打印age=7,然后age再自加1,所以此时打印age=7,但是其实此时age的值在内存中已经是8了)
System.out.println("age=" + age++);
//此时打印出来age=8
System.out.println("age=" + age);
//先自加,再使用(此时age在内存中的值是8,先自加1,age的值在内存中就变成了9,然后再打印age,所以此时打印出9)
System.out.println(++age);
//先使用,再自加(此时age在内存中的值是9,先打印出9,然后age再自加1,自加完后,此时age在内存中的值是10)
System.out.println(age++);
//此时打印age是10
System.out.println(age);
int index = 0;
String[] names = {"令狐冲", "张无忌", "韦小宝", "杨过", "段誉", "乔峰"};
// System.out.println(names[index++]); //打印出令狐冲
// System.out.println(names[index]); //打印出张无忌
//以上两行代码注释掉,那么以下两行代码,就会打印出张无忌
//如果以上两行代码没有注释掉,那么以下两行代码,就会打印出韦小宝
System.out.println(names[++index]); //打印出张无忌
System.out.println(names[index]); //打印出张无忌
}
}
PS:下面看下Java中i++和++i的区别
说来惭愧,从事开发工作也有一年时间了,然而在今天的一个业务逻辑里突然发现原来我对i++和++i都没有理解,或者说我之前的理解是错误的。这对于一个有追求的程序猿是不能容忍的。知道之后,迅速恶补学习,现在算是彻底的理解了。
这篇文章可能对于大神没什么用,毕竟技术层次不够,大神追求的都是思想层面的东西。但对于一些初学者的话还是有一些用的,或者有跟我一样的已经入行一些时间了,但对这个理解模糊的(IT界估计也就我一个了 ~~捂脸!)都可以参阅学习,我写的比较详细,相信只要你看,就绝对会有收获
1, i++ 和++i
–
在区分这两个之前,我们先来了解一下它们的运算规则
int i=1,a=0;
* i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1
* ++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2
看下面程序运行结果,有图有真相:
public class Test3 {
public static void main(String[] args) {
int i=1,a=0;
System.out.println("a=i++===> "+(a=i++));//1
//System.out.println("a=++i===> "+(a=++i));//2
}
}
这里算是基本了解了,那么我们在来一个练习让你更加的理解它们之间的关系
public class Test3 {
public static void main(String[] args) {
int y=0;
int i =0;
y=++y;
y=++y;
y=++y;
y=++y;
y=++y;
System.out.println("y="+y);
i=i++;
i=i++;
i=i++;
i=i++;
i=i++;
System.out.println("i="+i);
}
}
附上结果
是不是感觉有点转过转弯来,如果有这种感觉,那么恭喜你(找到跟我之前症状相同的了,哈哈),你也得好好理解理解了。下来是我添加上详细注释的代码。
public class Test3 {
public static void main(String[] args) {
int y=0;
//注意"="是赋值,"=="才是相等
//这里的y=++y 是先运算在赋值,先运算++y完了后y的值是1,然后在赋值给原来等于0的y
y=++y;// y==0,++y==y+1; 结果y=++y == y+1 == 0+1 ==1
y=++y;// y==1,++y==y+1; 结果y=++y == y+1 == 1+1 ==2
y=++y;// y==2,++y==y+1; 结果y=++y == y+1 == 2+1 ==3
y=++y;// y==3,++y==y+1; 结果y=++y == y+1 == 3+1 ==4
y=++y;// y==4,++y==y+1; 结果y=++y == y+1 == 4+1 ==5
System.out.println("y="+y);//5
int i =0;
// i==0,i++==0; 结果i=i++ == (记住先赋值后运算)i=i,i=i+1(由于是i++运算这里我们输出的i只取先赋值的结果也就是i=i)
i=i++;
i=i++;
i=i++;
i=i++;
i=i++;
System.out.println("i="+i);//0
System.out.println("================");//1
}
}
来源:https://blog.csdn.net/czh500/article/details/79665981


猜你喜欢
- 本文讲述了使用Qt5.3.0开发Android应用的方法,由于官方资料较少,此处记录开发过程遇到的问题及解决方法。具体步骤如下:1.Andr
- 前言我个人觉得,中间件的部署与使用是非常难记忆的;也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用。所以,我觉得学习
- 前言本文是我之前写的这篇文章《Android图文混排-实现EditText图文混合插入上传》的升级版,除了在EditText实现了图片上传之
- 一、概述我们对于这个图片肯定会非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构。在数据结构中我们了解到可以
- 本文实例为大家分享了android序列化过程Parcelable的具体代码,供大家参考,具体内容如下直接上代码:注释都写的很清楚了。publ
- 一、实现流程1.注册2.登录3.登录保持【状态续签】二、实现方法项目结构1.引入依赖<!-- spring-web --><
- 今天介绍下 Aspose.Words 对 word 中的图片进行删除string tempFile = Application.Startu
- 搭建个SSM框架居然花费了我好长时间!特此记录!需要准备的环境:idea 2017.1jdk1.8Maven 3.3.9请提前将idea与M
- listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明。
- 简单工厂模式:由一个工厂对象决定创建出哪一种类的实例。1.抽象类public abstract class People { p
- 相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,
- spring cloud gateway读取请求参数1. 我的版本:spring-cloud:Hoxton.RELEASEspring-bo
- 首先,必须要强调的一点,MD5不是加密算法,而是消息摘要算法,具有不可逆性。字符串通过MD5处理后会生成128位的二进制串。我们通常会将其转
- 1.System类System系统类,主要用于获取系统的属性数据和其他操作,因其构造方法是私有的并且类中的成员方法都是静态的,所以在使用的时
- 1. 抽象类是什么️给大家上一篇小作文,看完这个,你就理解了什么叫做抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不
- Java的三种标准注解和四种元注解先来说说什么是注解注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个
- ViewPager2 介绍ViewPager2 是基于 RecyclerView 重新编写的 ViewPager,比原有的 ViewPage
- 摘要:用spring-boot开发RESTful API非常的方便,在生产环境中,对发布的API增加授权保护是非常必要的。现在我们来看如何利
- 在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载。所以自己写了一个压缩文件的工具类。该工具类支持单个文件和文件夹压缩。放代码:
- 1、多个线程对同一个队列进行读写操作,要注意进行读写控制,某个线程在读取的时候,不允许其它线程读、写;某个线程在写的时候,不允许其它线程进行