Java语言基础(九)
Java语言基础(九)
一.自增运算(++) 自减运算(--)
i++ 就是将i+1再赋给 i
i-- 是将i-1再赋给 i

对变量i,j来说,i++ 或++i 这里没什么区别,都是将i的值加1后,再赋给i
++j 与 j++ 也没什么区别,将j的值加1后,再赋给j
但在这里, i++ 与 ++i 是有区别的

输出结果为什么是1,考虑一下
初始的时候 i=1, 那么加1后,i 为什么还是1
首先需要说明的是,i=i++ 包含赋值运算(=) 自增运算(++)
其中,自增运算(++)的优先级要高于赋值运算(=)
下图是从网上找的
++ 的优先级是2,赋值运算应该是14,数值越小,优先级越大
int i=1;
i=i++执行过程
(1).i++的优先级高,执行++,再执行=
(2).i++,先取i的值作为表达式 i++的值,然后将i的值加1,
此时,i++的值是1,而i的值的是2
(3).再将i++的值(1)赋给i,将2给覆盖了,此时i的值是1
i 的值的确变了,由1变成了2,但又由2变成了1 所以i的值现在是1
对i=++i来说,开发软件他会给出
The assignment to variable i has no effect的提示

提示上说,i=++i,对i没有影响
我们先分析一下(i=++i)这条语句
(1).++的优先级高,执行++,再执行=
(2).++i,先将i加1,然后再将 i 的值赋给表达式++i
此时,i的值的是2, 表达式(++i)的值也是2
(3).再将++i 的值赋给i
i 的值的变化过程,由1变成了2,又由2变成了2
之所以,出现那句提示,那是因为,在++i执行完后,i的值已经是2,
再将++i 的值赋给i ,现在对i的没影响了(都是2),所以才出现那句
上面的可以这样写:

自减运算 (i--)
int i=1;
i=i--;
(1).--的优先级高,执行--,再执行=
(2).i--,先取i的值,然后赋给表达式 i-- ,再将i减1
此时,i的值的是0, 表达式 i-- 的值也是1
(3).再将i--的值赋给i
i 的值的变化过程,由1变成了0,又由0变成了1
与 i=++i 一样的,这样 i=--i 写,也会出现提示

自减运算(--i)
int i=1;
i=--i;
(1).--的优先级高,执行--,再执行=
(2).--i,先将i减1,然后赋给表达式 --i
此时,i的值的是0, 表达式 --i 的值也是0
(3).再将 --i的值赋给 i
i的值的变化过程,由1变成了0,又由0变成了0
上面的可以这样写:

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【刘超★ljc】。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Java语言基础(九)的更多相关文章
- java语言基础02
一.Java语言基础(常量的概述和使用)(掌握) 1:什么是常量 就是在程序的执行过程中其值不发生改变的量. 2:Java中常量的分类 (1):字面值常量 (2):自定义常量(面向对象部分讲解) 3: ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
- Java之--Java语言基础组成—数组
Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...
- Java之--Java语言基础组成—函数
Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...
- Java之--Java语言基础组成(关键字、标识符、注释、常量和变量、运算符)
Java语言基础组成-关键字.标识符.注释.常量和变量.运算符 Java语言由8个模块构成,分别为:1.关键字:2.标识符(包名.类名.接口名.常量名.变量名等):3.注释:4.常量和变量:5.运算符 ...
- Java语言基础(二) Java关键字
Java语言基础(二) Java关键字 Java关键字比较多,我就不列举出来了,只记录一些常用的小知识点: ①Java的关键字只有小写. ②then.sizeof都不是Java的关键字,熟悉C++的程 ...
- Java语言基础(八)
Java语言基础(八) 一.数学运算 + - * / % (1)凡是byte short char类型都按int类型的计算 看看上面的代码,为什么出错! 我已经将100转成byte类型,( ...
- Java语言基础(七)
Java语言基础(七) 今天在公司多呆了会,回来晚了 一.自动类型转换 在Java中,数据是可以转换的 例如可以将byte类型的赋给int类型的 这里希望你了解内存的变化,例如 在这里,我想你应该知 ...
- Java语言基础(六)
Java语言基础(六) 前一章提到的, BigDecimal, DecimalFormat等具体用法,这里就不在说了,网上有许多 一.下面让我们看一个例子(自由落体运动位移) 说明: (1).公式是 ...
随机推荐
- 精通 Oracle+Python,第 8 部分:适合 Oracle DBA 使用的 Python
传统上,当需要为操作系统编写一些脚本时,人们常常会选用 Bash 或 Perl 脚本工具.这些工具易于使用,因而它们几乎变得无处不在,渗透到了包括 Oracle Database 在内的其他软件中,O ...
- 配有Tesla K40c的服务器新装Ubuntu16.04并安装CUDA8.0、Anaconda3、Matlab2016a、OPENCV3.1、CuDNN5.1、MXNet
注:本文原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) 决定加入深度学习的大军,感谢导师给配了台新设备!第一次接触服务器并配置开发环境,整个过程中 ...
- 变更到Android4.4的问题
更新到Android 4.4,写了个小程序.发现运行不起来了.抛空指针异常.debug模式下,发现在onCreate方法中获取Button是null. Android 4.4把layout进行了重组, ...
- jquery学会的
1.$("#id") $("xxxxx") (input, body) $(".class") 2. $("#id xxx ...
- [BZOJ 1106] [POI2007] 立方体大作战tet 【树状数组】
题目链接:BZOJ - 1106 题目分析 从1到2n枚举每一个位置. 如果枚举到某一个数,这个数已经是第二次出现,那么就看它和第一次出现的位置之间有多少数还没有被匹配,有多少没有匹配的就要进行多少次 ...
- windows下端口被占用的解决方法
1:打开CMD输入:netstat -ano | findstr "80" 找到PID: 2:查看应用名称:tasklist | findstr "2544" ...
- Codeforces Round #207 (Div. 2)
A:超级大水题: 代码: #include<cstdio> #define maxn 105 using namespace std; int n,a[maxn],x,y,ans; int ...
- Python 处理EXCEL的CSV文档分列求SUM
相对于导出EXCEL文件,PYTHON计算更为实时. import csv import sys from optparse import OptionParser def calculate_pro ...
- R统计软件真有意思哈,以后我怕要用得着,先自学
呵呵,作数据分析是数据监控后的动作. 思路是用监控系统产生数据, 如果监控本身提供统计最好,如果不提供,则可以用R来作分析统计和预测. 如果数据不符合规范,则用PYTHON进行处理转换. ~~~~~~ ...
- TCP/IP小纪
链 路 层 主 要 有 三 个 目 的 :( 1 )为 I P 模 块 发 送 和 接收 I P 数 据 报 ; ( 2 )为 A R P 模块发送 A R P 请 求 和 接 收 A R P 应 答 ...