i++和++i
今天做了一道题,代码如下:
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);
}
void fermin(inti){
i++;
}
}
要求输出的是什么?这里楼主做错了- -羞耻,因此今天围绕这道题来讲一讲。
首先这道题有两个陷阱。第一,java是属于值传递的,代码中的i属于基本数据类型,因此方法中的i只是外面i的一个副本,对它操作并不会对外面的i的值带来变化;其次,就是罪恶之源i=i++了,这里楼主刚开始并没有想太多,直接写了输出1,看了答案瞬间才反应过来= =。i++和++i不同,前者是先把当前i拿出来赋值给声明的变量,然后再加1,也就是说前面这道题i输出还是等于0;后者是先加1,然后再赋值给声明的变量,如果这道题改成i=++i,那么输出就是1了。
以上就是今天的小知识点,最后想对大家说,做题一定要思考一会- -,别以为很简单,有时候会有双重陷阱甚至更多,因此,做题需谨慎- -。
add:1.以下这道题输出什么呢?
int a = 0;
for(int i = 0;i<99;i++){
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);
知道的朋友在评论里说出来吧,并说明为什么哦。
推荐阅读
-
mssql和mysql哪个好
-
ES6--字符串和字符数组的扩展
-
JavaScript Undefined,Null类型和NaN值区别_基础知识
-
vue中使用async、await和promise实现异步API的同步调用
-
使用 async 和 await,实现 fetch 同步请求
-
「干货」细说 Array 的常用操作(ES5 和 ES6)
-
laravel怎么接收和保存一组checkbox到数据库?
-
vue 使用 async 和 await 实现异步 axios 同步化(实战案例:数据异步校验通过后,再执行保存)
-
JavaScript数组和字符串的操作方法
-
谈谈PHP中require和include的区别