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

 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;再赋值

Java基础-自增自减运算符练习题的更多相关文章

  1. JAVA中自增自减运算符(i++与++i的区别)

    注意: 自增运算符和自减运算符只能用于变量,而不能用于常亮或表达式 运算符 运算 范例 结果 ++ 自增(前):先运算后取值 a=2;b=++a; a=3;b=3; ++ 自增(后):先取值后运算 a ...

  2. Java基础——自增自减及初识Math类

    自增自减及初识Math类  public class Demon05 {     public static void main(String[] args) {         // ++ -- 自 ...

  3. 023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之——自增自减运算符

    023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之--自增自减运算符 本文知识点:Java算术运算符中的自增自减运算符 自增自减运算符 之前我们 ...

  4. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  5. 【java从入门到精通】day-06-基本运算符-自增自减运算符

    1.运算符 java语言支持如下运算符: 算术运算符:+,-,*,/,%,++,-- 赋值运算符:= 关系运算符:>,<,>=,<=,==,!=,instanceof 逻辑运算 ...

  6. java自增(自减)运算符

    自增(自减)运算符: ++ --就是可以将当前变量自我增加(减少)1 的运算符. i++, 后++, 先将 i 的值作为整个表达的值, 然后将 i 增加 1. ++i, 先++, 先将 i 增加 ...

  7. Java基础语法01——变量与运算符

    本文是对Java基础语法的第一部分的学习,包括注释:标识符的命名规则与规范:变量的数据类型分类以及转换:以及六种运算符(算术.赋值.比较.逻辑.三元和位运算符).

  8. 2-1赋值运算符 & 2-2自增自减运算符 &2-3

    2-1赋值运算符 先定义一个变量,把定义好的变量在赋值给另外一个变量.变向之间的互相赋值 2-2自增自减运算符 元素符,放在变量前和变量后的区别 先进行自增运算,再进行赋值运算.这里先进行num1的+ ...

  9. 【转】 C语言自增自减运算符深入剖析

    转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#in ...

随机推荐

  1. [转发]centos7搭建自己的yum源

    centos7搭建自己的yum源 https://www.cnblogs.com/juandx/p/6136621.html 还是需要学习呢 自己之前记得 查过 但是忘记了.     http://w ...

  2. 统计sql server 2012表的行数

    --功能:统计sql server 2012表的行数 SELECT a.name, a.object_id, b.rows, b.index_id FROM sys.tables AS a INNER ...

  3. 2019.07.05 纪中_B

    今日膜拜:czj大佬orz%%% 2019.07.05[NOIP提高组]模拟 B 组 今天做题的时候大概能判断出题人的考点,可是就是没学过...特别痛苦 T0:栈的定义,模拟就好了T1:感觉像是找规律 ...

  4. P1828香甜的黄油

    这是一道关于最短路的绿题. 题目给出一些农场,每个农场有奶牛,农场与农场之间存在边,要使所有奶牛到达其中一个农场的总距离最短,输出他们到达这个农场的距离.首先我想到了最小生成树,但我发现其实并不是,因 ...

  5. Jmeter的操作流程

    1.1 什么是 JMeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具.用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域 ...

  6. 从入门到自闭之Python递归

    递归:不断地调用自身,用函数实现 死递归(死循环): def func(): print(1) func() func() 知识点:官方说明最大深度1000,但实际执行998或997以下,看电脑性能 ...

  7. Java集合框架中的元素

    之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理. 一 ...

  8. 08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    一.为什么要用nginx,uwsgi? 1 首先nginx 是对外的服务接口,外部浏览器通过url访问nginx, 2nginx 接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静 ...

  9. Spring Cloud,Docker

    Spring Cloud 先决条件 Spring cloud 基于spring boot,spring,java Spring Cloud解决的问题 分布式微服务架构和微服务监控.注册于发现.跟踪等一 ...

  10. ORA-00001:unique constraint (use.sys_c0013338) violated

    从报错的 信息来看,是唯一约束.但是第一眼看到use.sys_c0013338 误以为是张表,(老司机帆船了啊,水还是咸的!) 解决方法: SQL>select table_name from ...