ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

你知道i=i++;的含义吗?原理其实没有你想的那么简单

2021-06-04 20:51:41  阅读:248  来源: 互联网

标签:count 06 变量 ++ 含义 int 2020 原理


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

i++和++i我们都知道,但是你知道i=i++;吗?

自上学时,老师就说i++是先赋值再加,而++i是先加再赋值,比如我们写个代码举下例子:

i++:

/**
   * 自增案例
   */
  public static void testZiZeng(){
    int i = 1;
    int a = i++;
    System.out.println("a="+a);
    System.out.println("i="+i);
  }

其运行结果是:

a=1
i=2

++i:

public static void testZiZeng(){
    int i = 1;
    int a = ++i;
    System.out.println("a="+a);
    System.out.println("i="+i);
  }

其运行结果为:

a=2
i=2

运行结果解释:

i的值没的说,不管是++i还是i++,都是在原来值的基础上自身加1,这个很好理解,不好理解的是a的值:

  • 第一个案例中,a = i++;相当于是这样的,a = i,i++,那么a的值自然就是1了。

  • 第二个案例,a = ++i,相当于i先++(此时i从1变成了2),然后在将i的值赋值个a,那么a自然而然也就成2了。

这一部分理解了,我们接着看下一个i=i++;

某天,给学生们写了一段代码:

public static void testZiZeng(){
    int count = 0;
    for(int i = 0;i<10;i++){
      count = count++;
    }
    System.out.println("count="+count);
  }

代码写完之后,问:“谁知道count的值是多少?”

王同学和刘同学在简单计算之后争相往起站:“老师,是10”,其他人也附和“没错,是10”,“对,就是10”……大家都陆陆续续的说出了自己心中的正确答案。

“小点声,你们说的是错的!别这么大声……”看着大家这么积极的回答,我不忍心的劝说道。

于是大家都用惊愕的眼神看着我,眼神里仿佛写着,十万个为什么。

其实正确答案是:

(点击空白处查看答案)

count=0

接下来我们分析一下为什么?

点点下面的小卡片就是对我莫大的支持,谢过啦~

count++是一个表达式,是有返回值的,它的返回值就是count自加前的值,Java对自加是这样处理的:首先把count的值(注意是值,不是引用)拷贝到一个临时变量区,然后对count变量加1,最后返回临时变量区的值。

用代码解释为这样的:

int temp = count; //先把i变量的值10保存到临时变量中
count = count+1; // i变量的值加1操作
count = temp; //再把临时变量中的值赋值给i

程序第一次循环时的详细处理步骤如下:

  •  JVM把count值(其值是0)拷贝到临时变量区。

  •  count值加1,这时候count的值是1。

  • 返回临时变量区的值,注意这个值是0,没修改过。

  • 返回值赋值给count,此时count值被重置成0。

知道为什么了吧!

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

老师,我没有学过事务……同学你过来,你看老师手里拿的是什么?

2020-06-11

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

sql server高级查询,看这篇文章就够了

2020-06-09

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

Linux基础知识之【简介与安装】

2020-06-08

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

教你2分钟永久激活win10系统手慢无……

2020-06-03

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3分钟内看完这,bootstraptable表格控件,受益匪浅!

2020-06-02

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

觉得好看,点击这里

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

标签:count,06,变量,++,含义,int,2020,原理
来源: https://blog.51cto.com/u_12718584/2865699

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有