关于java中自增,自减,和拓展运算符的小讨论

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;

时间: 2024-11-09 08:07:58

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

java中自增自减运算与c中自增自减的区别

今天看到java面试宝典里面有一道题目是这样的: 答案是0,我开始也有疑问,后来看到后面说到java的中间缓存变量,后来到网上查了查,终于理解了,是什么意思了.请看下面的代码和解释: package com.wj.demo; public class Test1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int j=0; for(int i=

Java后缀自增/自减表达式的返回值

Java后缀自增/自减表达式的返回值 今天看到一段代码,描述循环k次 while(k-- > 0){ //... } 直觉上认为是错的,k--后值变成了k-1,循环应该只能执行k-1次吧.实际这段代码是正确的.在Java8语言规范15.14.3中有以下描述: The value of the postfix decrement expression is the value of the variable before the new value is stored. 即后缀自减表达式的值为存储

[转]C语言中自增自减运算符教学探究-中国论文网

摘要:C语言教学中,自增自减运算符运用得非常广泛,且具有一定的使用技巧和难度.在诸多运算符中,自增自减运算符是学生最难理解和最易出错的运算符.对自增自减运算符的功能和具体应用进行探究,以期为提高C语言教学效果提供帮助.中国论文网 http://www.xzbu.com/8/view-3865031.htm 关键词:C语言:自增自减运算符:教学效果 中图分类号:G434文献标识码:A文章编号:1672-7800(2012)012-0188-02 0引言 C语言编程设计中,若合理使用自增自减运算符,

MongoDB在windows上安装以及java中的增删改查

1.windows下的安装创建 http://tech.it168.com/a2011/0603/1200/000001200064_2.shtml http://blog.csdn.net/xiaoxing598/article/details/54233044 2.Java操作mongodb http://www.cnblogs.com/zhwl/p/3491213.html http://blog.csdn.net/xiaoyw71/article/details/49633831 htt

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

Java中对日期的处理需要用到Calendar类,其中有几个方法在使用时需要新手注意. 1. 在获取月份时,Calendar.MONTH + 1 的原因(Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值)Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY.而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回"0",所以我们需要+1

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

//运算符在操作数之后,称为“后增量”.i变量自增,返回自增之前的值;//运算符在操作数之前,称为“前增量”.i变量自增,返回自增之后的值.//自减同理 public static void test1(int i) { int j = i++; System.out.println("j = i++; i="+i+" j="+j); } public static void test2(int i) { int j = ++i; System.out.printl

java中编写增删改查

按照图书数据库来说 //查询 :查询的返回值有两种类型,如果返回的数据你不确定是一条还是多条就返回一个List集合.如果你确定数据返回的是一条,可以把返回值换成Book实体类型.public List<Book> selectAll(){//参数看你是否用的到,这里没有传//1.写sql语句String sql="select * from Book"; //2.接收sql语句result rs=exeQruey(sql); //3.把数据循环遍历到实体中List<B

035、Java中自增之++在后面的写法

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int numA = 10; // 定义整型变量 int numB = 20; // 定义整型变量 // “++”写在后面,表示先使用numA的内容进行加法计算 // 加法计算完成之后在对numA的内容进行自增 int resul

034、Java中自增之++在前面的写法

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int numA = 10; // 定义整型变量 int numB = 20; // 定义整型变量 // “++”写在变量前面,表示先对numA的变量内容加1 // 使用处理后的numA变量的内容 + numB变量的内容 int