一.简介

java语言支持如下运算符:

  • 算术运算符
    +,-,*,/,%,++(自增),–(自减)
  • 赋值运算符
    =
  • 扩展赋值运算符
    +=,-=,*=,/=
  • 关系运算符
    <,>=,<=,==,!=
  • 逻辑运算符
    &,|, &&,||,!,^
  • 位运算符
    &,|,^,~ , >>,<<,>>> (了解!!!)
  • 条件运算符
    ?:

二.算术运算符

+,-,*,/,%的规则和数学中的规则一样 PS:如果只有整数参与运算,结果也为整数

其中/用来表示两个数相除运算,%用来取余。

System.out.println(12/3);  //输出4
    System.out.println(12%5);	//输出2

++,–,了解一个,另一个含义相同。

++含义:在整型变量的基础上执行+1操作,然后再赋值给此变量

++i(前导自增):先执行自增操作,赋值给自己,再参加其他运算

i++(后导自增):先参加其他运算,再执行自增操作,赋值给自己

int a = 3;
int b = a++; //执行完后,b=3。先给b赋值,再自增。
int c = ++a; //执行完后,c=5。先自增,再给b赋值

三.赋值运算符

=:赋值号,将赋值号右边的数据,赋值给左边的变量(空间)。注意类型必须要一致或兼容。

四.扩展赋值运算符

扩展赋值运算符又称双目运算符,由算术运算符+赋值运算符组成:

运算符

用法举例

等效的表达式

+=

a += b

a = a+b

-=

a -=b

a = a-b

*=

a *=b

a = a*b

/=

a /=b

a = a/b

%=

a %=b

a = a%b

相较于等效的表达式优缺点:

- 优点:提高执行效率自动做强制类型转换
	 - 缺点:不直观


五.关系运算符

关系运算符和数学中的含义一致,最终结果一定是布尔值。

< >= <=只能比较byte,short,int ,long ,float,double,char

== != 可以比较任意类型数据

六.逻辑运算符

逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么 是true,要么false

运算符

含义

说明

&

与|且(全真为真,否则为假)

可做位运算符

|

或(有真为真,否则为假)

可做位运算符


非(真为假,假为真)

^

异或(相同为假,相异为真)

可做位运算符

&&

短路与(全真为真,遇假短路)

||

短路或(全假为假,遇真短路)

PS:&& || 和 & | 区别

&&和||采用短路方式。从左到右,如果值确定就不会计算下去了。

七.三目条件运算符

语法格式:

x ? y : z

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算表达式的结果为y,反之为z。

int score = 80; int x = -100;
	String type = score < 60 ? "不及格" : "及格";
	int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
	System.out.println("type= " + type);//输出type为及格
	System.out.println("flag= "+ flag); //输出flag为-1

八.位运算符(了解)

位运算符:&,|,^,~ , >>,<<,>>>

如何区分逻辑运算符和位运算符:

  • 逻辑运算符:左右连接的是布尔类型的操作数
  • 位运算符:左右连接的是具体的数值

【1】<< 左移:向左移动第二个操作数个位数,空位补0

3<<2 = 12

java 什么意思是什么 符号 在java中!是什么意思_java


面试题: 4乘以8最快的方式: 4<<3

【2】>> 有符号右移:向左移动第二个操作数个位数,移出位置忽略不计,剩下的就为2进制结果

6>>2 = 1

java 什么意思是什么 符号 在java中!是什么意思_学习_02

-6>>2 = -2

java 什么意思是什么 符号 在java中!是什么意思_java_03

【3】>>> 无符号右移:该运算符将第一个操作数向右移动指定的位数。右移的多余位将被丢弃。值为零的比特 将从左侧移入。其符号位变为 0,因此其表示的结果始终为非负数。

6>>>2 = 1

java 什么意思是什么 符号 在java中!是什么意思_赋值_04


【4】 & 与:对两个操作数统一位置的数据进行运算,一个为0就是0,两个都为1才是1

6&3 = 2

java 什么意思是什么 符号 在java中!是什么意思_大数据_05

【5】| 或:对两个操作数统一位置的数据进行运算,一个为1就是1,两个都为 0才是 0

6|3=7

java 什么意思是什么 符号 在java中!是什么意思_学习_06

【6】^异或:对两个操作数统一位置的数据进行运算,相同为0,不同为1

6^3 = 5

java 什么意思是什么 符号 在java中!是什么意思_学习_07


【7】~反:对一个操作数所有位置作取反操作,如果正数取反后记得减1。正数取反为负数,负数取反为正数

~6 = -7

java 什么意思是什么 符号 在java中!是什么意思_大数据_08

九.运算符总结


java 什么意思是什么 符号 在java中!是什么意思_java 什么意思是什么 符号_09

java 什么意思是什么 符号 在java中!是什么意思_大数据_10

java 什么意思是什么 符号 在java中!是什么意思_java_11

十.运算符优先级

不需要刻意的去记优先级关系,赋值<三目<逻辑<关系<算术<单目

实际开发中如果记不得可以用()

java 什么意思是什么 符号 在java中!是什么意思_java 什么意思是什么 符号_12