SamZhou-2019.github.io

View on GitHub

三、运算符

按运算优先级排列:

括号()

后置自增减运算符 v++, v–

前置自增减运算符 ++v, –v 正负标识符 +v, -v 按位和逻辑非运算符 ~, !

基本运算符 *, /, %(取余) +, -

移位运算符 «, »(带符号), »>(无符号)

比较运算符 >, <, >=, <=, instanceof ==, !=

按位运算符及逻辑与、或、异或运算符 &

| && ||

三元运算符 ?:

赋值运算符 =, *=, /=, %= +=, -=, «=, »= &=, ^=, !=, »>=

例子 含义
int x = 5/2; 2 整数除法
double y = 5/2; 2.0 先做整数除法,然后再将结果转换为double
double z = 5.0/2;
double u = 5/2.0;
2.5
2.5
由于分子、分母至少有一个是浮点数,因此做浮点除法
int w = (int)(5.0/2) 2 先做浮点除法,然后取整。取整的算法就是,直接截去小数部分(注意:不是四舍五入)

与(\&\&)、或(||)短路运算法则

与(\&\&)、或(||)遵循短路运算法则,即:一旦前表达式为false(与“&&”)/true(或“   ”),则直接得结果false(与“&&”)/true(或“   ”),而不运行后表达式的操作。
&, 也可进行逻辑运算,但⚠不适用短路运算法则,因此不建议使用。

位运算符

位运算符示例:

/* 15   00000000 00000000 00000000 00001111
   23   00000000 00000000 00000000 00010111
 &= 7   00000000 00000000 00000000 00000111
 |=31   00000000 00000000 00000000 00011111
~15=-16 11111111 11111111 11111111 11110000
 ^=24   00000000 00000000 00000000 00011000*/

左移运算符<<相当于乘以2的n次方,右移运算符>>相当于除以2的n次方。

bonus!

自增运算符++,自减运算符–的原理

j=i++;①将i的值赋值给“i++”②i本身+1③将“i++”的值赋给j。(可以通过i=i++得到验证)

j=++i;①i本身+1②将i的值赋值给“i++”③将“i++”的值赋给j。

比较运算符

比较运算符的输出是一个布尔值。如 boolean a = 3>2;,此时a为true。

不同数据类型,相同值的变量,如int a = 10; double b = 10.0;,a==b返回值为true。

基本数据类型中,可以比较的数据类型包括:byte short int long float double char。boolean不可以比较大小,但boolean之间可以判断是否相等(==)或不等(!=)。

三元运算符

语法:条件?值1:值2; 条件成立(true)返回值1,条件不成立(false)返回值2

进行运算时数据类型可能会自动转换

当运行short s=10;s=s+5;时会报错。这是因为里面的5是int类型,“s+5”的结果会自动转换为int,但是s本身的数据类型为short。把int的数据值赋予short的变量时会报错。因此建议使用s+=5替代。

返回上一页