今天作了一道题,代码以下:java
packagealgorithms.com.guan.javajicu;
public class Inc {
public staticvoid main(String[] args) {
Incinc = newInc();
inti = 0;
inc.fermin(i);
i=i ++;
System.out.println(i);ci
}
void fermin(inti){
i++;
}
}it
要求输出的是什么?这里楼主作错了- -羞耻,所以今天围绕这道题来说一讲。class
首先这道题有两个陷阱。第一,java是属于值传递的,代码中的i属于基本数据类型,所以方法中的i只是外面i的一个副本,对它操做并不会对外面的i的值带来变化;其次,就是罪恶之源i=i++了,这里楼主刚开始并无想太多,直接写了输出1,看了答案瞬间才反应过来= =。i++和++i不一样,前者是先把当前i拿出来赋值给声明的变量i=i,而后再i+1,加1以后并无赋值操做,也就是说前面这道题i输出仍是等于0;后者是先i=i+1,而后再赋值给声明的变量i=i,若是这道题改为i=++i,那么输出就是1了。变量
以上就是今天的小知识点,最后想对你们说,作题必定要思考一会- -,别觉得很简单,有时候会有双重陷阱甚至更多,所以,作题需谨慎- -。数据类型
Add:1.如下这道题输出什么呢?方法
int a = 0;数据
for(int i = 0;i<99;i++){static
a = a++;思考
}
System.out.println(a);
2.如下这道题又输出什么呢= =?
Integer a = 0;
int b = 0;
for(int i = 0;i<99;i++){
a = a++;
b = a++;
}
System.out.println(a);
System.out.println(b);
知道的朋友在评论里说出来吧,并说明为何哦。