有关于i++,i=i++等符号的笔记
2015-01-14 13:57
288 查看
最近在看一些基础知识,发现自己以前忽略掉了很多东西,而这些东西恰恰是面试笔试中最常考到的
1.i=i+1
这个是最简单,最明了的一个表达式
2.有关于i++和++i的区别
i++和++i都是代表i=i+1的意思;
i++指的是i++所在的语句运行后,i再自增1;
++i指的是++i所在的语句运行前,i先自增1;
其实这个大家都懂,就不在阐述;
同时加一道题目,大家看看
int i=0;
i=++i + i++ + i++ + i++;
结果i等于多少?
首先,“++i” 后此时i= 1;然后第一个“i++” 后,i 依然等于1;但是第二个“i++”的时候,由于第一个“i++”的滞后自增,此时i=2;
到了第三个“i++”的时候,由于第二个滞后自增,此时i=3;所以i=1 + 1 + 2 + 3 = 7
3. i=i++;
如果基础不好的人,很容易和前面的表达式混淆,以为上面表达的意思是i=i++和i=i+1等价,其实差别很大的,
原因是java中有中间缓存变量的机制,所以i=i++等价于:
temp=i;
i=i+1;
i=temp;
所以如果有使用到i的值的时候,其实i的值是不变的
下面给一道面试题
public static void main(String[] args) {
int j =0;
for (int i=0 ; i<100; i++){
j = j++;
//java使用了中间缓存变量
//j= j ++;相当于
//temp = j;
//j = j + 1;
//j = temp;
}
System.out.println(j); }
其实最后j还是等于0,而不是想象中的100。
希望能帮助到大家。。。
1.i=i+1
这个是最简单,最明了的一个表达式
2.有关于i++和++i的区别
i++和++i都是代表i=i+1的意思;
i++指的是i++所在的语句运行后,i再自增1;
++i指的是++i所在的语句运行前,i先自增1;
其实这个大家都懂,就不在阐述;
同时加一道题目,大家看看
int i=0;
i=++i + i++ + i++ + i++;
结果i等于多少?
首先,“++i” 后此时i= 1;然后第一个“i++” 后,i 依然等于1;但是第二个“i++”的时候,由于第一个“i++”的滞后自增,此时i=2;
到了第三个“i++”的时候,由于第二个滞后自增,此时i=3;所以i=1 + 1 + 2 + 3 = 7
3. i=i++;
如果基础不好的人,很容易和前面的表达式混淆,以为上面表达的意思是i=i++和i=i+1等价,其实差别很大的,
原因是java中有中间缓存变量的机制,所以i=i++等价于:
temp=i;
i=i+1;
i=temp;
所以如果有使用到i的值的时候,其实i的值是不变的
下面给一道面试题
public static void main(String[] args) {
int j =0;
for (int i=0 ; i<100; i++){
j = j++;
//java使用了中间缓存变量
//j= j ++;相当于
//temp = j;
//j = j + 1;
//j = temp;
}
System.out.println(j); }
其实最后j还是等于0,而不是想象中的100。
希望能帮助到大家。。。
相关文章推荐
- (zz)nnotation学习笔记2:关于Annotation与符号,还是要读arcmap帮助!!!
- 学习笔记-----关于VS中使用模板类出现无法解析的外部符号问题
- 摘抄笔记 关于学习
- Jive笔记1--关于Jive1中的验证和相关类的调用
- 软件测试学习笔记--(关于排错)
- 关于函数重载笔记002
- 学习笔记:关于科学方法在社会科学中的局限性
- 学习笔记--关于Spherical Harmonic
- 关于Lempel-Ziv压缩算法的笔记
- linux编程笔记 关于信号
- 关于函数重载解析笔记001
- Jive笔记2----关于Jive2中的中文搜索
- C++ Primer 学习笔记关于练习题6.12
- 关于错误 LNK2005在对象中已定义符号
- 两年前初学.NET时写的关于DataGrid的笔记
- CMS-一篇关于分类资源管理系统设计思路的笔记
- 学习笔记:关于科学方法在社会科学中的局限性
- 关于网络编程(服务端)的一些笔记
- 关于友元的使用的笔记和疑问
- 做个笔记:关于oracle,sybase,sql server的事务