世界上往往最复杂的东西,看起来都最简单,比如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.
相关推荐
20210302-申万宏源-万科A-000002-龙头重返荣耀,多元价值蕴藏.pdf
全市场教育行业策略报告:解锁新高考改革“3+1+2”模式下蕴藏的机会-0507-安信证券-20页.pdf
2021.03.02-万科A:龙头重返荣耀,多元价值蕴藏-申万宏源-23页.pdf
以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更独具匠心地从Java 8极其重要的新特性之一lambda表达式发...
20210301-东吴证券-“技术分析拥抱选股因子”系列研究(五):CPV因子移位版,价量自相关性中蕴藏的选股信息.pdf
易观-全民消费背后蕴藏的人群选择-618-27页.pdf
以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更独具匠心地从Java 8极其重要的新特性之一lambda表达式发...
以全局高度提炼语言精髓,以高浓度、高含金量的方式对Java 8新特性进行细致讲解,将其沉浸于Java多年的真知灼见蕴藏于书中,既扎实覆盖Java编程的基础知识,更独具匠心地从Java 8极其重要的新特性之一lambda表达式发...
优秀PPT作品欣赏之生活中隐藏的哲理,妙手回春作品; 本PPT通过生活总得动物、物品解释生活中蕴藏的一些哲理,这个PowerPoint制作的大气简洁,非常有内涵。 蜘蛛:能坐享其成,靠的就是那张关系网。 气球:只要被...
万科A-000002-龙头重返荣耀,多元价值蕴藏
全市场教育行业策略报告:新三板深化改革开启,教育板块蕴藏哪些机会?-1107-安信证券-17页.pdf
全市场教育行业策略报告:受政策驱动明显,港股教育H1财报蕴藏哪些信息?-0912-安信证券-17页.pdf
20210224-安信证券-新三板主题报告:如何发掘民办高教、k12教培、在线教育和民办k12板块蕴藏的机会?.pdf
2020年春季市场波动的前因和后果:风起于青萍之末,细节蕴藏了未来的机会-200327
2020年春季市场波动的前因和后果:风起于青萍之末,细节蕴藏了未来的机会-200327
20210124-国海证券-机械设备行业第4周周报:工业机器人景气向上,机器视觉产业链蕴藏蓝海市场.pdf
20210730-安信证券-新三板主题报告:新三板蕴藏多家职教培训细分龙头,原三板公司优路教育申报创业板.pdf