当前位置: 首页 > 编程笔记 >

java中的前++和后++的区别示例代码详解

拓拔松
2023-03-14
本文向大家介绍java中的前++和后++的区别示例代码详解,包括了java中的前++和后++的区别示例代码详解的使用技巧和注意事项,需要的朋友参考一下

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
		
		
	}

}

总结

到此这篇关于java中的前++和后++的区别示例代码详解的文章就介绍到这了,更多相关java 前++和后++内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍代码详解java里的“==”和“equels”区别,包括了代码详解java里的“==”和“equels”区别的使用技巧和注意事项,需要的朋友参考一下 测试1: 先看一组String类型比较,废话不多说,直接上代码: 输出结果: 总结: 结果a == b:程序在运行的时候会创建一个字符串缓冲池,在String a = “java书苑”时, “java书苑”被放到了字符串缓冲池中,当 S

  • 问题内容: 我试图考虑一个很好的例子,详细说明Ada的严格类型输入和Java的强类型之间的区别。有没有人有使用基于整数的值识别类型转换中这些差异的好例子? 问题答案: 从Ada的角度来看,这可能会有所帮助。 类型声明有两种基本形式:新类型和子类型。 即使新类型具有相同的值范围,它也被视为与任何以前的类型完全不同的类型。只能将新类型的对象分配给新类型的变量,依此类推。 子类型是从现有类型派生的,共享

  • 问题内容: 查看下面的示例代码 和 当我问到代码差异时,我并不是在说执行流程,这是显而易见的。 那么这些代码之间的 真正 区别是什么?建议何时 在 通话 前 使用您的代码,何时 在 通话 后 使用您的代码?我想在某些情况下这很重要。 问题答案: 您不应在之前放置任何代码,因为此方法可以使系统执行正确暂停应用程序所需的操作。您要在回调中执行的所有代码都应放在调用之后。希望这可以帮助。 活动报价: 注

  • 本文向大家介绍Java 中的注解详解及示例代码,包括了Java 中的注解详解及示例代码的使用技巧和注意事项,需要的朋友参考一下 在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行。 注解可以做什么 Java中的注解通常扮演以下角色 编译器指令 构建时指令 运行时指令 其中 Java内

  • 本文向大家介绍在Java中操作Zookeeper的示例代码详解,包括了在Java中操作Zookeeper的示例代码详解的使用技巧和注意事项,需要的朋友参考一下 依赖 连接到zkServer 检测节点是否存在 操作后,服务端会返回处理结果,返回void、null也算处理结果。 同步指的是当前线程阻塞,等待服务端返回数据,收到返回的数据才继续往下执行; 异步回调指的是,把对结果(返回的数据)的处理写在

  • 本文向大家介绍详解Java中int和Integer的区别,包括了详解Java中int和Integer的区别的使用技巧和注意事项,需要的朋友参考一下 基本数据类型和引用类型 Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是I