zoukankan      html  css  js  c++  java
  • 关于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;

  • 相关阅读:
    new 做了什么
    create-react-app+react-app-rewired引入antd实践
    实战build-react(二)-------引入Ant Design(增加)
    package.json文件
    读书多些会怎样
    关于学历
    QDialog弹出一个窗口,改变窗口大小
    #include <thread>
    #include <memory>
    #include <map>
  • 原文地址:https://www.cnblogs.com/df-happyforever/p/5741421.html
Copyright © 2011-2022 走看看