运算符(operator)
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java 提供了一套运算符来操作变量。

整理了下Java最基本的运算符和其用途:

一元运算符+-*/%
二元运算符++--
赋值运算符=
扩展运算符+=-=*=/=
关系运算符><>=<===!=instanceof
逻辑运算符&&ll!^
位运算符&l^~>><<>>>
条件运算符?:
字符串连接符+


赋值和扩展运算符用法举例表示
+=a += ba = a+b
-=a -= ba = a-b
*=a *= ba = a*b
/=a /= ba = a/b
%=a %= ba = a%b


二元运算符表示用法举例
++自增1a++++a
--自减1a----a

(--变量和变量--的区别):

  • --变量是先自减,后赋值
  • 变量--是先赋值后自减
  • ++变量和变量++也是同理。


关系运算符含义示例
==等于a ==b
!=不等于a != b
>大于a > b
<小于a > b
>=大于或等于a >= b
<=小于或等于a <= b


逻辑运算符表示
逻辑与& (与)两个操作数为true,结果才是true,否则是false
逻辑或l (或)两个操作数有一个是true,结果就是true
短路与&& (与)只要有一个为false,则直接返回false
短路或ll (或)只要有一个为true,则直接返回true
逻辑非! (非)取反:! false 为 true,! true 则为 false


位运算符表示
~取反
&取位与
l按位或
^按位异或
<<左移运算符,左移1位相当于乘2
>>右移运算符,右移1位相当于除2取商

【相关示例1】位运算符:左移运算和右移运算

int a =3*2*2;
int b =3<<2; //相当于:3*2*2
int c =12/2/2;
int d =12>>2 //相当于:3/2/2;



【相关示例2】位运算符:判断和取位与

int a=3;
int b=4;
if(a==3 && b==4){        //结果为正确
    System.out.println("正确");
}else{
    System.out.println("错误");
}

if(a==3 & b==4){        //结果为错误
    System.out.println("正确");
}else{
    System.out.println("错误");
}

&:两个操作数为true,结果才是true,否则还是false
&&:只要有一个为true直接返回true,否则直接返回false

需要注意:
(1).&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。

(2).不要把“^”当做数学运算“乘方”,是“位的异或”操作。

条件运算符表示
?是否
:

【相关示例3】条件运算符示例:
定义成绩(score) :80分
定义同学(chen):
chen 同学的分数为: score,score赋值给chen,判断score是否小于60 ,小于60结果为"不及格",否则结果为"及格"(80不小于60),

int score = 80;
String chen = score<60?"不及格":"及格";
System.out.println("chen的分数 = "+score); //打印成绩
System.out.println("chen = "+chen); //打印合格否

抽象比喻:先计算 x 的值,若为true,则整个运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。

字符串连接符表示
+连接

【相关示例4】字符串连接符:

int a=12;
System.out.println("a="+a); 输出结果:a=12

"+"连接符两侧的操作数中要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。



运算符优先级(逻辑非>逻辑与>逻辑或)

在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

优先级运算符类型顺序
1.()括号运算符由左到右
2.!、+、-一元运算符由左到右
2.~位逻辑运算符由右到左
2.++、--递增与递减运算符由右到左
3.*、/、%算术运算符由左到右
4.+、-、算术运算符由左到右
5.<<、>>位左移、右移运算符由左到右
6.>、>=、<、<=关系运算符由左到右
7.==、!=关系运算符由左到右
8.&位运算符、逻辑运算符由左到右
9.^位运算符、逻辑运算符由左到右
10.l位运算符、逻辑运算符由左到右
11.&&逻辑运算符由左到右
12.ll逻辑运算符由左到右
13.?:条件运算符由右到左
14.=、+=、-=、*=、/=、%=赋值/扩展运算符由右到左