`
wsql
  • 浏览: 11884354 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java中关于i++与++i的问题

 
阅读更多

在《Java程序员面试宝典》里面有提到i++这个部分,j++是一个依赖于java里面的“中间缓存变量机制”来实现的。通俗的说

++在前就是“先加后赋”(++j)

++在后就是“先赋后加”(j++)

package cn.xy.test;

public class TestPlus
{
	private static int a()
	{
		int i = 10;
		int a = 0;
		a = i++ + i++;

		// temp1 = i; 10
		// i = i + 1; 11
		// temp2 = i; 11
		// i = i + 1; 12
		// a = temp1 + temp2 = 21;
		return a;
	}

	private static int b()
	{
		int i = 10;
		int b = 0;
		b = ++i + ++i;

		// i = i + 1; 11
		// temp1 = i; 11
		// i = i + 1; 12
		// temp2 = i; 12
		// b = temp1 + temp2 = 23;
		return b;
	}

	private static int c()
	{
		int i = 10;
		int c = 0;
		c = ++i + i++;

		// i = i + 1; 11
		// temp1 = i; 11
		// temp2 = i 11
		// i = i + 1; 12
		// c = temp1 + temp2 = 22
		return c;
	}

	private static int d()
	{
		int i = 10;
		int d = 0;
		d = i++ + ++i;

		// temp1 = i; 10
		// i = i + 1; 11
		// i = i + 1; 12
		// temp2 = i; 12
		// d = temp1 + temp2 = 22;
		return d;
	}

	public static void main(String[] args)
	{
		System.out.println(a());
		System.out.println(b());
		System.out.println(c());
		System.out.println(d());
	}
}

原帖地址:http://blog.csdn.net/zlqqhs/article/details/8288800

分享到:
评论

相关推荐

    谈谈Java中的i++

    这是和JVM的内存分配有关,JVM在处理这段带代码时,会先把i++的结果赋值给一个临时变量temp,然后再将这个临时变量的值赋值给i。即如下: int i = 0; int temp; // i = i++; int a = temp = i++;// 临时变量...

    浅谈c i++与java i++的区别

    浅谈c i++与java i++的区别 在编程语言中,increment运算符(++)是一个非常常用的操作符,它可以将变量的值增加1。但是,c语言和java语言在使用increment运算符时存在着一些区别,这篇文章将深入探讨c语言和java...

    java中对 i=i++ 的 解释(反编译出java虚拟机指令的)

    在Java编程语言中,`i=i++`是一个典型的自增表达式,它的行为可能会引起一些混淆,特别是当对比于其他编程语言如C或C++时。这个表达式在Java中的行为可以通过反编译成Java虚拟机(JVM)指令来理解。 首先,让我们...

    java中for(int i= 0; i<=10;i=i++)System.out.print(i);为什么无限输出0

    Java循环的一个小问题,java中for(int i= 0; i;i=i++)System.out.print(i);为什么无限输出0

    Java中i++与++i的区别和使用

    Java中i++与++i的区别和使用 Java 中的 i++ 和 ++i 是两个常用的操作符,它们都是对变量进行加 1 或减 1 的操作,但是它们的执行顺序和结果却有着很大的区别。 首先,让我们来了解一下 i++ 和 ++i 的定义。i++ 是...

    java中的i++和++i的区别详解

    "java中的i++和++i的区别详解" Java中的i++和++i是两个非常重要的运算符,它们都是对变量进行自加操作,但是它们的执行顺序和结果却有所不同。 首先, let's 看一下它们的定义: * i++:后加加,先使用变量的当前...

    i = i++ 代码分析

    在 Java 中,i = i++ 代码的执行结果可能会让人感到意外。下面我们将对这段代码进行详细的分析。 首先,让我们看一下这段代码: ```java int i = 0; i = i++; System.out.println(i); ``` 乍看之下,人们可能会认为...

    java学习资料 Oracle+java+JS+CSS+HTML

    学习Java包括理解其语法、类与对象、接口、异常处理、多线程、集合框架、I/O流、网络编程等核心概念。同时,Spring框架、MyBatis等企业级开发工具也是Java开发者的必备技能。 2. **Oracle**:Oracle是世界上最流行...

    c++的左值右值 i++与++i的区别.docx

    C++ 中的左值和右值、i++ 与 ++i 的区别 在 C++ 编程语言中,左值(Lvalue)和右值(Rvalue)是两个重要的概念,它们在变量和表达式中的角色不同,理解这两个概念对于编写正确和高效的代码非常重要。 左值(Lvalue...

    java开发基于springboot+layui图书管理系统源码.zip

    java开发基于springboot+layui图书管理系统源码.zip java开发基于springboot+layui图书管理系统源码.zip java开发基于springboot+layui图书管理系统源码.zip java开发基于springboot+layui图书管理系统源码.zip java...

    测试i++和++i的区别

    使用++i和i++可以使迭代操作变得容易,但是两者到底区别在哪可以从这个程序中得知,使用java语言编写

    详解java面试题中的i++和++i

    Java中i++和++i的详解 Java中的i++和++i是两个常见的运算符,经常出现在面试题中。它们的作用都是将变量i加1,但是它们的执行顺序和返回值却有所不同。 首先,让我们从字节码的角度来看addAfterReturn和...

    为什么(i++)不能做左值,而(++i)可以

    本文主要讲了为什么(i++)不能做左值,而(++i)可以的原因,希望对你的学习有所帮助。

    java核心技术I 中文+英文

    java核心技术I 第8版 包含中文+英文两个版本 中文是pdf扫描版 英文含目录内容可以复制

    java指导学习1+2+3代码答案

    在Java中,可能涉及到`java.io`或`javax.media`相关的API,这需要对I/O流和多媒体处理有一定了解。 在"repositories.xml"这个文件中,虽然名字暗示它可能是一个Maven或Gradle的依赖仓库配置文件,但在这个上下文中...

    Java核心技术+卷I+基础知识(原书第10版)高清

    Java核心技术+卷I+基础知识(原书第10版)高清 中文 完整版 PDF 免费下载 特别清晰 带书签

    Java核心技术-卷I+卷II(第9版) 中文高清 + 源码 .part4

    Java核心技术-卷I+卷II(第9版) 中文高清 + 源码,由于文件过大,因此压缩文件分为四部分,这是第四部分,其余部分请去我的资源查找,资源名称类似:Java核心技术-卷I+卷II(第9版) 中文高清 + 源码 .part1。

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

    * 后++(i++):先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1。 现在,让我们通过代码示例来演示前++和后++的区别: ```java public class Test { public static void main(String[] args) { int age = 6;...

    Java中i=i++问题分析

     i = i++;  结果还是0  为什么?  程序的执行顺序是这样的:因为++在后面,所以先使用i,“使用”的含义是i++这个表达式的值是0,但是并没有做赋值操作,它在整个语句的后才做赋值,也是说在做了++操作后再...

    深入理解java中i++和++i的区别

    下面小编就为大家带来一篇深入理解java中i++和++i的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics