`
stone02111
  • 浏览: 215181 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA基础自加i++

    博客分类:
  • Java
 
阅读更多

        世界上往往最复杂的东西,看起来都最简单,比如i++和++i,前面这个是先用再加,后面是先加再用,道理人人都懂,但是其中蕴藏很深的玄机,请看如下四个例子,你知道他们答案是多少吗?

        1、

 

	public static void main(String[] args) {
	       int m=0;
	       for(int i=0;i<100;i++){
	              m=m++;
	      }
	      System.out.println("m="+m);
	  }

         结果为:

 

 

m=0

        2、

 

 

	public static void main(String[] args) {
		int m = 0;
		for (int i = 0; i < 100; i++) {
			m = ++m;
		}
		System.out.println("m=" + m);
	}

         结果为:

 

 

m=100

         3、

 

 

	public static void main(String[] args) {
		int m = 0;
		for (int i = 0; i < 100; i++) {
			m = i++;
		}
		System.out.println("m=" + m);
	}

         结果为:

 

 

m=98

          4、

 

 

	public static void main(String[] args) {
		int m = 0;
		for (int i = 0; i < 100; i++) {
			m = ++i;
		}
		System.out.println("m=" + m);
	}

          结果为:

 

 

m=99

           为什么呢? 一个一个来

 

   (1) m=m++,可以这样理解,首先看后面,m在前,是先用再加,m一直在用,所以每次赋值都无效!!!所以一直还是原来的值,即0。点评,这个很变态...

   (2)m=++m,首先还是看后面,+在前,先加再用,即先加个一,再赋值,所以每次都改变,当i=0的时候,m=1,当i=99,m=100.怎么快速得到呢,即m=(99-0)+1嘛!点评,这个,有点技术含量。

   (3)i=98的时候,执行自加,m=98。这个时候,在循环体里面的i已经达到99了,加完后再回到for表达式的自加,i变成100,进入判断i<100,不再执行循环,推出。 点评,这个,,,很容易搞错成100或者99。

   (4)和3道理一样,i到98,因为是先加再用,最后一次i=98,加1后为99,所以最终m=99.点评,这个和(3)一样容易搞错。

 

 

   总结:

   1.先看for的执行顺序:

 

for(sta1;sta2;sta3) {
       sta4;
}

 

 

   (1)进入循环执行sta1;//只是进入的时候执行.
   (2)执行sta2;//条件为真才执行sta4,不然就跳出for了.
   (3)执行sta4;
   (4)执行sta3;
   (5)再回到第2步开始执行

   2.上面四道题目的思考:

(1)遇到又自加又赋值的表达式,一定要仔细研究,最好自己debug一下,看下结果具体是怎么样的。说实在话,我第一次做,全错。

   (2)i++后还进行赋值是一种不严谨的操作方式,在c语言中已经被认为是不稳妥的。尽量在自加后不要乱赋值,比如1可以改写为m=m+1,那么肯定是100.

   (3)for循环尽量不要对循环变量赋值和自加,自减.如果要计算的话,可以取个临时变量先接受i的值,比如,3可以改为

	public static void main(String[] args) {
		int m = 0;
		for (int i = 0; i < 100; i++) {
			int temp = i;
			temp++;
			m = temp;

		}
		System.out.println("m=" + m);
	}

 那么结果肯定也是100.

 

转自:http://nannan408.iteye.com/blog/1238745

 

分享到:
评论

相关推荐

    Core+Java+Volume+I+Fundamentals+Ninth+Edition

    《Core Java Volume I Fundamentals Ninth Edition》是一本关于Java基础知识的书籍,它是第九版。这本书籍的作者是Cay S. Horstmann和Gary Cornell,由Pearson Education公司出版。书籍涵盖了Java编程语言的基础知识...

    Java核心技术 卷 I+卷II 第11版 最新英文版 pdf

    《Java核心技术 卷 I+卷II 第11版 最新英文版》是Java开发者不可或缺的参考书籍,由Cay S. Horstmann和Gary Cornell两位资深Java专家撰写。这套书籍全面覆盖了Java语言的基础和高级特性,对于深入理解和掌握Java编程...

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

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

    java基础教程+课件+代码

    本资源包含“Java基础教程”和相关的课件,是学习Java编程的理想起点。 《Java基础教程》通常会涵盖以下几个关键知识点: 1. **Java环境设置**:安装JDK(Java Development Kit),配置环境变量如JAVA_HOME、PATH...

    Java核心技术+基础知识+面试汇总大全 完整PDF版

    这是一套Java核心技术基础使用手册,包含Java 基础核心总结、Java核心基础、Java核心知识、Java 基础面试题总结等,内含最强 Java 核心知识点整理及思维导图,需要的朋友可下载试试! Java是一门编程语言,Java发展...

    java基础知识点研究.txt

    1、赋值顺序不同 ++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。 因为++i 是后面一步才赋值的,所以它能够当作一个...形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。

    Java核心技术 卷I + 卷II(第9版)(中文带目录)

    《JAVA核心技术(卷1):基础知识(原书第9版)》是《Java核心技术》的最新版,《Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了的...

    零基础学Java教程PPT+视频+源代码

    总的来说,"零基础学Java教程PPT+视频+源代码"是一套全面且实用的学习资源,无论你是完全的新手还是希望巩固Java基础的开发者,都能从中受益。通过系统学习和不断实践,你将能够逐步掌握Java编程,并开启你的编程之...

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

    《Java核心技术 卷I 基础知识(原书第10版)》是一本深入讲解Java编程语言核心概念和技术的经典著作。这本书旨在为初学者和有经验的开发者提供全面而深入的Java SE(标准版)知识,是学习Java开发不可或缺的参考书籍...

    Java核心技术 卷1+卷2 PDF

    Java核心技术是Java程序员学习进阶的关键所在,涵盖了Java语言的基础到高级特性,是理解Java编程思想和实现方法的重要参考书籍。本资源包含了"Java核心技术 卷1+卷2 PDF",为开发者提供了一套完整的Java学习资料。卷...

    java中的自增(++)和自减(--)运算符.pdf

    - 后缀形式:`i++`,先返回变量i的当前值,然后将其加1。 2. 自减运算符(--): - 前缀形式:`--i`,首先将变量i的值减1,然后返回新的值。 - 后缀形式:`i--`,先返回变量i的当前值,然后将其减1。 让我们通过几...

    Java软件开发基础课件+复习提纲+代码

    第13章可能涉及到更高级的话题,如多线程或者I/O流,而第4章则可能涉及类和对象的基础知识,包括封装、继承和多态。 "复习提纲.pdf" 是一个关键的学习辅助工具,它通常包含了课程的重点和难点,帮助学生系统地回顾...

    java爬虫的实例代码+java清除空文件夹的代码

    - **I/O流**:Java的I/O流系统用于读写文件,包括FileInputStream和FileOutputStream等。在爬虫中用于保存下载的图片,在清除空文件夹时用于读取和检查目录内容。 4. **编程实践**: - **异常处理**:在编写这类...

    java中的自增(++)和自减(--)运算符.docx

    在Java编程语言中,自增(`++`)和自减(`--`)运算符是非常基础但又十分重要的概念。这两个运算符能够快速地改变变量的值,是编程中经常使用的工具之一。 #### 自增运算符(`++`) 自增运算符`++`的功能是将变量...

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    java技术问题,java+web+ssh

    ### Java技术问题详解:Java + Web + SSH 面试...以上是对Java基础知识中几个重要知识点的详细解释,这些知识点不仅在面试中常见,也是日常开发中经常用到的基础技能。接下来将深入探讨Java Web以及SSH框架的相关知识。

    Java基础+Struts+Spring+Hibernate总结

    深入学习异常处理、文件I/O操作、集合框架(如ArrayList、LinkedList、HashMap等)也是Java基础中的重要内容。此外,线程和并发编程是Java应用开发中的常见场景,需了解线程的创建与同步机制。 Struts是Java Web...

    java基础必练+笔试

    根据给定文件的信息,我们可以总结出以下Java基础知识点: ### 1. 斐波那契数列 斐波那契数列定义为:`f[0]=1, f[1]=1, f[2]=f[1]+f[1], f[n]=f[n-1]+f[n-2]`。 **代码示例**: ```java public int fibonacci(int...

    Core Java Volume I+II 10 edition

    《Core Java Volume I+II 10th Edition》是Java编程领域的经典教材,全面深入地讲解了Java的核心技术。这套书分为两卷,第一卷主要介绍基础,第二卷则涉及高级特性。以下是对这两个部分的一些关键知识点的详细阐述:...

    Java核心技术卷1+卷2+第8版

    《Java核心技术》是Java领域的经典教材,它深入浅出地讲解了Java语言的基础知识和核心概念,是许多程序员入门和提升技能的重要参考书籍。本资源包含了《Java核心技术》卷1和卷2的第8版,覆盖了Java语言的全面内容。 ...

Global site tag (gtag.js) - Google Analytics