zoukankan      html  css  js  c++  java
  • Java-运算符

    赋值运算符
    “=”:把“=”右边的值,赋值给左边的变量
    eg:int a=12;把12赋值给a
    a=a+1;首先计算a+1的结果,然后把a+1的结果赋值给a
    赋值运算符的优先级很低

    算数运算符
    +,-,*,/,%
    参与算数运算的变量,必须是同一类型

    int num1=12;
    double num2=12.1;
    double result=num1+num2;

    底层优先,把num1自动类型转化由int->double,
    然后执行num1+num2->12.0+12.1->24.1,最后把24.1赋值给result
    /:取商
    %:取余运算(取模运算),要求的是余数
    eg:10%3=1;
    负数的余数结果依然是负数
    浮点数的余数,结果依然是浮点数
    复合赋值运算符:
    +=:a+=10->a=a+10;
    -=:a-=10->a=a-10;
    *=:a*=10->a=a*10;
    /=:a/=10->a=a/10;
    %=:a%=10->a=a%10;
    开发或测试的时候少用,不易于阅读代码
    自增和自减运算:
    1、自增运算也属于算数运算符:++

    int num;
    int result=++num;

    2、自增运算本质就是给变量+1
    ++num->num=num+1
    3、前++:把++运算符放到变量的前面
    eg:++num
    含义:先执行num=num+1,然后把num+1的结果,作为++num整个表达式的值
    看问题:分两个部分,第1个部分是变量本身的值,第2个部分就是表达式的值

    int num1=1;
    int result=++num1;

    先执行num1=num1+1,结果num1的值是2,然后把这个2作为++num1表达式的值,然后把2赋值给result
    num1=2,result=2

    int num1=10;
    int result=++num1 + ++num1;

    首先执行第1个++num1,num1先加1结果11,把11作为第一个表达式++num1的值
    num1的值是11  ++num1表达式的值是11
    之后,执行第2个++num1,num1先加1结果是12(前一次++num1 num1的值是11),然后把12作为第2个++num1表达式的值
    num1的值是12  ++num1表达式的值是12
    num1=12,result=23
    4、后置++:i++,首先把当前i的值作为整个表达式i++的值,然后i=i+1

    int i=1;
    int result=i++;

    首先确定i++整个表达式的值就是当前i的值(i++->1),然后执行i=i+1,最后把i++表达式的值1赋值给result,虽然i的值最后是2,但是表达式i++的值依然是1没变
    i=2  result=1

    int i=20;
    int result=i++ + ++i + i++;

    i=23  result=64

    分析:首先执行第1个i++,i 21  i++ 20
    然后执行第2个++i(i 21),i 22  ++i 22
    之后执行第三个i++(i 22),i 23  i++ 22
    最后把i++,++i,i++三个表达式的值相加,赋值给result
    i++和++i的相同点和不同点:
    相同点:i++和++i表达式中变量i的值都会加1
    不同点:i++表达式的值,是i本身的值
                  ++i表达式的值,是i+1的值
    5、自减:变量i永远都要减1(i=i-1)
    分类:--i和i--;区别就是表达式的值不同
    --i:
    首先i=i-1,然后把i减完以后的值作为整个表达式--i的值

    int i=1;
    int result=--i;

    结果:i=0,result=0
    分析:首先i=i-1(i->0),然后把i减完以后的值0,作为整个表达式--i的值,最后把—i表达式的值赋值给result
    i--:
    首先确定i—表达式的值,就是i当前的值,然后执行i=i-1

    int i=1;
    int result=i--;

    结果:i=0,result=1
    分析:首先确定i—表达式值1,然后i=i-1,最后把i--表达式的值赋值给result
    i--和--i的相同点和不同点:
    相同点:变量i都会减1
    不同点:表达式的值不同,i--->i,--i->i-1

    int i=10;
    int result=i++ + --i + i--;

    结果:i=9,result=30
    分析:首先执行i++,i 11  i++ 10
               然后执行--i(i 11),i 10  --i 10
               最后执行i--(i 10),I 9  i-- 10

    关系运算符
    关系运算符用于测试两个操作数之间的关系
    关系表达式将返回一个布尔(boolean)结果
    ==:等于
    !=:不等于
    >:大于
    <:小于
    >=:大于或等于
    <=:小于或等于

    逻辑运算符
    !:逻辑反
    ||:逻辑或
    &&:逻辑与
    逻辑运算符一般和关系运算符一起使用,把多个条件进行连接

    条件运算符
    语法结构:表达式1?表达式2:表达式3
    表达式1为true,整个表达式的结果是表达式2,反之,表达式1为flase,整个表达式的结果是表达式3

    int num1=12,num2=20;
    int max=num1>num2?num1:num2;

    如果num1的值大于num2的值,则表达式num1>num2结果为true,则整个表达式num1>num2?num1:num2的结果就是表达式2(num1的值),反之,如果num1的值小于num2的值,则表达式num1>num2结果为flase,则整个表达式num1>num2?num1:num2结果就是表达式3(num2的值)
    优先级
    算数运算符     高     i>a+b --> i>(a+b)
    关系运算符             i>a==b --> (i>a)==b
    逻辑运算符
    赋值运算符     低     i=a>=b --> i=(a>=b)

  • 相关阅读:
    web----WSGI
    ovs 实现vlan隔离(一)
    ovs流表机制(四)用vxlan实现不同网段通信
    ovs流表机制(四)用vxlan实现同网段通信
    ovs 流表机制(三)--group表
    ovs 流表机制(二)-OVS流表table之间的跳转
    ovs 流表机制(一)
    euler ironic镜像驱动问题(一)镜像启动失败报dracut initqueue timeout
    ovs流表
    arm64 uefi启动
  • 原文地址:https://www.cnblogs.com/lilyo/p/12792551.html
Copyright © 2011-2022 走看看