java中运算符很多,但是能深入讨论的不算太多。这里我仅仅以++,*=为例做讨论。

例:++

i=0;

i=i++ + ++i;//i=1

i=++i+i++;//i=2

i=i++ -++i;//i=-2

因为++运算符遵循的规则:++在前是先计算,后使用;++在后是后计算,先使用;

以i=++i+i++;详解:

先++i,结果是先i加1,再产生i的一份拷贝做为下一步运算的值,假设拷贝为i_copy1,那么++i以后i_copy1的值为1,i值为1.
再i++,结果是产生一份i的拷贝做为下一步运算的值,然后i加1,假设拷贝为i_copy2,那么i++以后i_copy2的值为1,i值为2.

最后"+"运算符的作用是i_copy1+i_copy2,根据上面推论结果为1+1=2;

==========================================================

--运算同++;

==========================================================

关于拓展运算符;

首先:

char a;

a+=b~a=a+b

a+=b == (char)(a+b);

拓展运算符不改变数据类型

byte i=10;
i=i+10;//错误,右边是int型
i+=1000;//仍然是byte型,但是精度严重损失;

另一个要注意的是拓展运算符的运算顺序;

例:

int x=5;
int b=x*=x/=x+x;//拓展赋值运算同一个算式中,x的值不会变;//如果是同一个算式中从左往右++,--,x的值每一步都会改变;
System.out.println(b);
这题输出为0;因为计算机中,赋值是从右往左赋值的;所以多个拓展运算在一个算式中的时候,从右往左计算 x+x=10;5/10=0;5*=0--->0;

关于java中自增,自减,和拓展运算符的小讨论的更多相关文章

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

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

  2. Java中Calendar.DAY_OF_WEEK需要减一的原因

    http://blog.sina.com.cn/s/blog_45c06e600100pm77.html ——————————————————————————————————————————————— ...

  3. c中自增自减的妙用

    #include <stdio.h> int main() { ; printf("%d,%d,%d,%d",i++;i--;++i;--i); /*运算从右往左运算 ...

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

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

  5. 2017年9月22日作业 c++算术运算符 自增 自减 逻辑运算符 位运算符 条件运算符(三元运算符)

    作业1: c++算术运算符试题,分析下面程序的输出结果是什么 //第一个: int x=8999;int value=x*1000/1000; //第二个 int x=8999;int value=x ...

  6. Java SE --- 自增自减

    关于变量的自增与自减运算.   1) int b = a++,作用是将a的值先赋给b,然后再让a自增1.   2) int b = ++a,作用是将a的值先自增1,然后将自增后的结果赋给b. 直接上例 ...

  7. Java中自增(++)和赋值(=)运算效率比较

    前言   将一个int型数组x[]从初值0变成1.有两种做法: // 只考虑后自增 int length = x.length; for (int i = 0; i < length; i++) ...

  8. Java基础-自增自减运算符练习题

    我们用一个简单的例子分析下边的运行结果: package demo; public class ZiZeng { int i = 0; test(i); // i = i++; i = ++i; Sy ...

  9. Java——变量自增(++)自减(--)

    //运算符在操作数之后,称为“后增量”.i变量自增,返回自增之前的值;//运算符在操作数之前,称为“前增量”.i变量自增,返回自增之后的值.//自减同理 public static void test ...

随机推荐

  1. python-函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  2. C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)

    在开发过程中,经常需要获取电脑的一些属性,如获取硬盘ID/CPU序列号/MAC地址作为来加密字符串. 1.硬盘 在我查看网上一些文档时,发现很多人对硬盘序列号很模糊~ 什么叫硬盘序列号?指的是作为一个 ...

  3. User mode Linux

    一.简介 用户模式Linux(User ModeLinux,UML)不同于其他Linux虚拟化项目,UML尽量将它自己作为一个普通的程序.从Linux2.6.9版本起,用户模式Linux(User m ...

  4. 关于Cewu Lu等的《Combining Sketch and Tone for Pencil Drawing Production》一文铅笔画算法的理解和笔录。

     相关论文的链接:Combining Sketch and Tone for Pencil Drawing Production 第一次看<Combining Sketch and Tone f ...

  5. svm心得体会(2)

    昨天和李老师讨论一会还是有所得的,虽然我发誓要早睡又泡汤了,又无原则晚睡了. 总结一下有这么几点心得认识: (1)MATLAB再带的svm工具箱得不到参数,必须在路径中添加libsvm工具箱,安装在M ...

  6. 数组,集合分割函数,join()

    join函数定义如下: // 串联类型为 System.String 的 System.Collections.Generic.IEnumerable<T> 构造集合的成员,其中在每个成员 ...

  7. 前端必备的js知识点(转载)

    1.本文主体源自:http://www.cnblogs.com/coco1s/p/4029708.html,有兴趣的可以直接去那里看,也可以看看我整理加拓展的.2.js是一门什么样的语言及特点?    ...

  8. 3d图片切换(css3帧动画)

    效果带抖动翻转隐藏,使用帧动画 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  9. https简介/原理/部署【转】

    转自: http://han.guokai.blog.163.com/blog/static/136718271201211631456811/ http://www.barretlee.com/bl ...

  10. 解决UINavigationController在pushViewController时出现的"卡顿"问题

    进行开发中,遇到了个小问题: 在使用UINavigationController的-pushViewController:animated:执行入栈一个子控制器操作时(即最新栈顶子控制器),会出现推出 ...