世界上往往最复杂的东西,看起来都最简单,比如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);
}
2.
public static void main(String[] args) {
int m=0;
for(int i=0;i<100;i++){
m=++m;
}
System.out.println("m="+m);
}
3.
public static void main(String[] args) {
int m=0;
for(int i=0;i<100;i++){
m=i++;
}
System.out.println("m="+m);
}
4.
public static void main(String[] args) {
int m=0;
for(int i=0;i<100;i++){
m=++i;
}
System.out.println("m="+m);
}
自己可以先运行看看,答案是:0,100,98,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.
相关推荐
因此,Java应用软件能在相当小的系统之上独立工作。 2. 平台独立性:这是Java最吸引人的地方。由于它采用先编译成中间码(字节码),然后装载与校验,再解释成不同的机器码来执行,即“Java虚拟机”的思想,“屏蔽...
东吴证券研究所发布的这份题为“技术分析拥抱选股因子”系列研究的第五篇报告,深入探讨了基于价量关系的选股因子,尤其是CPV因子的移位版,以及价量自相关性中蕴藏的选股信息。 首先,报告前言部分概述了该研究...
本篇证券研究报告由申万宏源发布,日期为2021年3月2日,详细分析了万科A在不同业务领域的经营状况及其价值,并提出了投资建议。 首先,报告重点探讨了万科A在住宅开发领域的核心竞争力。作为国内房地产行业的龙头...
以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更独具匠心地从Java 8极其重要的新特性之一lambda表达式发...
因此,Java 语言被美国著名杂志 PC Magazine 评为 1995 年十大优秀科技产品(计算机类仅此一项入选)之一,随之大量出现了用 Java 编写的软件产品,受到工业界的重视与好评,认为 "Java 是八十年代以来计算机界的一...
以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更独具匠心地从Java 8极其重要的新特性之一lambda表达式发...
以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更独具匠心地从Java 8极其重要的新特性之一lambda表达式发...
这一模式自2018年起在河北、辽宁、江苏、福建、湖北、湖南、广东、重庆等八个省市启动试点,并将于2021年高考全面实施。该模式的核心是赋予学生更多的选择权,同时兼顾高校的人才选拔需求。 “3”代表语文、数学、...
优秀PPT作品欣赏之生活中隐藏的哲理,妙手回春作品; 本PPT通过生活总得动物、物品解释生活中蕴藏的一些哲理,这个PowerPoint制作的大气简洁,非常有内涵。 蜘蛛:能坐享其成,靠的就是那张关系网。 气球:只要被...
【万科A】是中国房地产市场的领军企业,其在住宅开发、物业管理、商业地产、物流地产和租赁住宅等多个领域展现出卓越的经营能力和市场地位。本报告重点分析了万科各业务板块的价值,并给出了投资评级。...
本篇将深入探讨“微信跳一跳”游戏的JAVA代码解密,揭示游戏运行的内在逻辑。 首先,我们要了解JAVA语言在游戏开发中的角色。JAVA是一种广泛使用的面向对象的编程语言,因其跨平台性、高效性和丰富的库支持,常被...
井盖的设计看似是一个日常生活中的小问题,实则蕴藏着深厚的工程学、人类行为学以及安全性考虑。 首先,从几何学的角度来看,圆是一种非常实用的形状。圆形井盖无论从哪个方向放置,都能完美覆盖圆形的井口,这在...
而2015届高考语文人生哲理篇提供的写作素材“钻石就在我们的身边”,便是这一旅程的指引明灯。它不仅适用于高考学子们的写作,更是每个人都应铭记在心的生活箴言。 从一个国王的故事中,我们看到了智慧的体现。这位...
在标题“万科A-000002-龙头重返荣耀,多元价值蕴藏”中,我们可以解读出以下几个关键知识点: 1. **股票代码000002**:这是万科A在深证交易所的股票代码,它代表了万科在中国股市中的身份,投资者可以通过这个代码...
苏宁智慧零售的精髓在于其线上线下融合的模式,这一模式被称为“两大两小多专”,涵盖了从大型购物中心到社区便利店,再到专业店的多种业态。这种多元化的布局策略使得苏宁能够触及并服务不同层次的消费者。在线上,...
"eclipse-workspace.zip"这个压缩包中,蕴藏着丰富的Java学习资源,主要涵盖了Java的基础语法和面向对象编程的核心概念。下面,我们将深入探讨这些关键知识点。 首先,Java基础语法是所有Java开发者的基石。这包括...
在互联网的海洋中,蕴藏着海量的有价值信息。如何合法、高效地获取这些信息?Python爬虫工具与教程为您揭开这一神秘面纱。通过这些资源,您可以轻松地爬取网站信息,提取所需内容,为各种应用场景提供强大的数据支持...