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)

原文地址:https://www.cnblogs.com/lilyo/p/12792551.html