`
dy545443766
  • 浏览: 7362 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java中那些你需要注意的地方(一) 自增运算

    博客分类:
  • java
阅读更多
       不知不觉中,已经写了这么久的java代码,以前太懒了,不爱总结,不爱做记录。现在发现,多多总结还是对自己有很多好处的。好啦,不废话了,今天给大家谈谈这个简单的自增运算问题。
        还记得当初刚开始学习编程语言的时候,就接触到了自增运算符,i++,++i,这字眼你应该是再熟不过了吧。i++是先赋值后加1, ++i是先加1后赋值。请看下面例子:
public class test{
    public static void test(){
        int count = 0;
        for(int i = 0; i < 5; i++){
           count = count++; 
        }
        System.out.println(count);
    }
}


       关于这个例子的结果你怎么看?count=5 ?真的是这样吗?也许还是有不少初学者会认为结果为5。但是运行起来,你会发现结果为0,为什么呢?
        这还得从jvm的运行机制说起,上面的第一次循环是根据以下几步所得:
       1. jvm将count的值(初始为0)拷贝到临时变量区
        2. count执行加1,得到count = 1
       3. 返回临时变量区的count值(0)
       4. 将返回的值(0)赋给count,此时count的值仍然为0

       依此,循环5次,所以最终得到的值仍为0。
        这过程就好比如下所示:
public class test{
    public static int test(){
        //第一步,先保存值到变量区
        int tempCount = 0;
        //第二步,执行+1
        count = count + 1;
        //第四部,返回临时变区的变量值
        return tempCount;
    }
}

        现在我们再来看看以下代码
public class test{
    public static void test(){
        int count = 0;
        for(int i = 0; i < 5; i++){
           count = ++count; 
        }
        System.out.println(count);
    }
}

        它的值是什么呢? count=5? 对了! 可通过以上步骤再来分析一次,当执行第一次循环时:
         1. 由于是++count,二话不说,上来先加1,此时count值为1
        2. jvm将count(值为1)拷贝到临时变量区
         3. 返回临时变量区的值(值为1)
         4. 将返回的值赋值给count,因此第一次循环的值为1

         第二次循环,执行此步骤,得到count的值为2,依此类推,循环5次,最终得到的结果为5。
        相信看完这个,你以后应该不会再对这个自加问题犯迷糊了,呵呵,细心,细心,再细心     
分享到:
评论

相关推荐

    Java运算案例(算数运算+赋值运算+逻辑运算+关系运算+自增运算+自减运算+条件运算+位运算)

    Java运算案例包括算数运算、赋值运算、逻辑运算、关系运算、自增运算、自减运算、条件运算、位运算;

    Java中使用While语句自增运算遍历数组典型实例

    主要介绍了Java中使用While语句自增运算遍历数组典型实例,本文直接给出实例代码,并对每一句代码都注解了详细注释,需要的朋友可以参考下

    Java程序设计基础:自增自减运算符.pptx

    自增/自减运算符 目录 课程导入 掌握自增/自减运算符的计算 能够熟练使用自增/自减运算符 自增/自减运算符 基本规则: 作用:在对一个变量做加 1 或减 1 处理时,可以使用 ++ 或 --。 ++ 或 --是单目运算符,放在操作...

    用自增运算控制P0口8位LED流水花样_单片机C语言实例(纯C语言源代码).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-073-Java基本语法-运算符-自增运算.avi 北京动力节点-Java编程零基础教程-074-Java基本语法-运算符-前增运算与后增运算的区别.avi 北京动力节点-Java编程零基础教程-075-Java...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java中自增和自减操作符(++/--)的那些事

    主要给大家介绍了关于Java中自增和自减操作符(++/--)的那些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    java2入门经典.part01

    第一章:Java概述 什么是Java Java语言的特性 学习Java java程序 学习Java要走的路 ava环境 基于Java语言的面向对象程序设计 对象是什么 如何定义对象的类 对象的操作 Java程序语句 封装 类和数据类型 类和子类 使用...

    Java2入门经典.rar

    第一章:Java概述 什么是Java Java语言的特性 学习Java ava程序 学习Java要走的路 ava环境 基于Java语言的面向对象程序设计 对象是什么 如何定义对象的类 对象的操作 Java程序语句 封装 类和数据类型 类和子类 使用...

    JAVA 实现《捕鱼达人》游戏-全部源码

    # 主要设计 1、业务对象模型(“找对象”,理清对象之间的...6、循环显示不同的图片:不断对Index进行自增取余运算,就类似于数据结构中的循环队列那样处理即可。 需要技术指导,写项目程序,等更多服务请私信联系博主

    C语言自增自减运算符的区别与理解

    自增自减运算符存在于C/C++/C#/Java/Python等高级语言中,它的作用是在运算结束前(前置自增自减运算符)或后(后置自增自减运算符)将变量的值加(或减)一。主要的使用方式就两种,用在操作数前和操作数后,下面...

    Java编程语言的基础知识作了一个较为全面的汇总-供大家学习研究参考

    4、编写第一个Java程序并运行 5、CLASSPATH指的是类加载路径 6、程序注释,对以后的所有代码都要进行注释,主页可以方便进行开发需求 7、标识符和关键字 8、Java数据类型的划分以及数据类型的操作 java数据类型的...

    学通Java的24堂课

    3.8.2 基本功训练2——变量自增运算 83 3.8.3 基本功训练3——类型转换 84 3.8.4 基本功训练4——运算符的应用 84 3.8.5 基本功训练5——求最大值 85 3.8.6 基本功训练6——位移实现数字乘以2的8次幂 86 3.9 ...

    Java经典编程源码基础例程300.zip

    Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 ...

    JNI-C JAVA AES

    计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是 在计算器不能维持很长的...

    java开发环境有关面试题

    学完java开发环境部分,自己在各大网站上找了几个相对初学者来说比较容易理解的关于java开发环境的面试题。同时包含自增自减运算的部分题型

Global site tag (gtag.js) - Google Analytics