我们用一个简单的例子分析下边的运行结果:

 package demo;

 public class ZiZeng {
public static void main(String[] args) { int i = 0;
test(i);
// i = i++;
i = ++i;
System.out.println("----" + i);
// i = i++;
i = i++;
System.out.println("****" + i); } public static void test(int i){
i++;
System.out.println("++++" + i);
}
}

输出结果:

++++1
----1
****1

对以上的执行结果分析如下:
逐行代码分析:

1, 在第5行定义了 int i = 0;

2, 在 第6行调用了test(i)方法,此时的 i = 0作为实际参数将值0传给了test方法的形式参数i,

test方法中的i 是形式参数,形式参数值的改变不会影响实际参数,所以test方法中的i的值是1,而,main方法中i的值仍然为0

3, 第18行输出 1

4, 在第8行中, i = ++i,先自增后赋值,所以此时 i = 1

5, 第9行输出 i = 1;

6, 在第11行中,i = i++,先赋值再自增,,所以此时i = 1

7, 第12行输出 1

练习题2:

对于以下,有int x = 5, y = 6, z;

题目1:z = ++x + y++;

题目2:z = ++x + x++;

题目3:x = ++x + x++;

  题目4:z = x > y ? ++x : y++;

答案:

题目1:x = 6; z = 12; y = 7

题目2:x=7, y = 6, z=12

题目3:x=12

题目4:x = 5, y = 7, z = 6

练习3,

 int a=1;

System.out.println(++a+a);
 
结果:4
 
练习4,

int i = 0;

int j = i++;

int k = --i;

这段代码运行后,i等于多少?j等于多少?k等于多少?

i:0
j:0
k:0

1. int i = 0;

2. int j = i++ + ++i;

3. int k = --i + i--;

代码执行后i、j、k分别等于多少呢?

在第二个例子中,对于int j=i++ + ++i;,首先运行i++,i的值0被用于加运算(+),之后i自增值变为1,然后运行++i,i先自增变为2,之后被用于加运算,最后将i两次的值相加的结果0+2=2赋给j,因此这行代码运行完毕后i=2、j=2;对于int k=--i + i--;用一样的思路分析,具体过程在此不再赘述,结果应该是i=-2、k=-2。

练习5,

int a=5;
int b=++a;   // ++在前 先运算再赋值 现在 a=b=6;
int c=--b+a;  //--优先级比+高,先计算-- c此时b=5再加上a 5+6=11;再赋值

int c=a+(++b); //同理 括号优先级最高 先计算++b 此时b=7 6+7=13;再赋值

最新文章

  1. .NET开源进行时:消除误解、努力前行(本文首发于《程序员》2015第10A期的原始版本)
  2. Code First :使用Entity. Framework编程(7) ----转发 收藏
  3. 使用curl传递cookie错误的问题
  4. python基础之常用模块以及格式化输出
  5. 【wikioi】1295 N皇后问题
  6. strlen和mb_strlen的区别
  7. scala学习笔记:理解stream和view
  8. 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果
  9. Oracle11g服务及实例
  10. SpringMVC05使用注解的方式
  11. 第二章 自己的框架WMTS服务,下载数据集成的文章1
  12. Contest Balloons
  13. getScrollX()理解
  14. CentOS下载及版本选择-CentOS LiveCD、LiveDVD和BinDVD区别
  15. 生成makefile文件编译源文件
  16. 如何在非 React 项目中使用 Redux
  17. POJ2251-Dungeon Master
  18. C# WinForm 富文本编辑器 用kindeditor实现本地图片只选取不上传到编辑器
  19. 2018-2019-2 网络对抗week1 Kali安装 20165333陈国超
  20. C# webbrowser遍历网页元素

热门文章

  1. springboot 打包问题 项目依赖三方jar ,之前的同事是直接丢到项目lib下 ,今天使用springbioot打包的时候,找不到这个jar
  2. 2018.08.14【2018提高组】模拟A组 比赛总结
  3. 01串LIS(固定串思维)--Kirk and a Binary String (hard version)---Codeforces Round #581 (Div. 2)
  4. PB动态游标代码段
  5. 十大经典排序算法(Python,Java实现)
  6. python词云生成-wordcloud库
  7. Java中「与运算,或运算,异或运算,取反运算。」
  8. ArcGis之popup列表字段自定义
  9. js特效背景--点线随着鼠标移动而改变
  10. 解决跨域问题,前端 live-server --port=1802 后端启动 localhost:1801,以及解决 vue 的 axios 请求整合