JavaSE之运算符

算术运算符

常见的算数运算符有:+    -    *    /   %(求余数,取模)   ++   –
+:当加号两边的操作数都是数值型(注意:字符也是数值型,因为它有对应的ASCLL码值),则做加法运算,当加号两边的操作数中有一个为非数值类型,则做连接,最终连接后的结果为String

int a = 3,b = 4;
int sum = a + b;
System.out.println("sum = "+sum);	//"sum = 7"
System.out.println("sum = "+a+b);	//"sum = 34"
System.out.println('*' + '\t' + '*');	//93

-:当做减法运算时,必须保证两个操作数都是数值类型
/:如果两个操作数都是整数,那么商也是整数,如果两者有其一是小数(或都是),那么商就是小数
除数不为0
%:如果两个操作数都是整数,那么余数也是整数,如果两者有其一是小数(或都是),那么余数就是小数
取余 % 结果的正负取决于被模数,被模数为正,则结果为正,反之也是
模数不为0(相当于除数的位置)
++:++表示自身加1,分为前置++和后置++
前置++:将++编写在变量名称前面,先自身加1,然后再做其他运算
int a = 3;
int b = ++a; //a = 4 b = 4
后置++:将++编写在变量名称后面,先做其他运算,然后再自身加1
int x = 5;
int y = x++; //y = 5 x = 6
- -:自身减1,分为前置- -和后置- -,原理同上

连接运算符

+:
作用:求和、连接
如何实现两个变量值的连接?

int a = 13,b = 14;
String s = "" + a + b;

赋值运算符

赋值运算符包括:=   +=   -=   *=   /=   %=
=:将右侧的值赋给左侧变量名称
+=:又称为扩展运算符,例如:a+=1;–等价于–>a=a+1
以下两条语句等价吗?

int a = 123,s = 0;
s = s * 10 + a % 10;	//s = 3
s *= 10 + a % 10;	//s = 0 等价于s = s * (10 + a % 10);

扩展运算符的好处是:即可以实现运算,又不会改变数据类型

byte a = 1,b = 1;
a += 6;	//a = 7
System.out.println("a = " + a);
b = b + 6;//编译报错,因为6默认为int类型,没有使用强制转换
System.out.println("b = " + b);
int a = 1,b = 1;
a += 0.5;	//a = 1
System.out.println("a = " + a);
b = b + 0.5;//编译报错,0.5默认为double类型,没有使用强制转换
System.out.println("b = " + b);

由上可以看出:当使用扩展运算符时,变量最终的数据类型没有发生改变。
-=   *=   /=   %=同上

关系运算符

>		<		>=			<=			==			!=

关系运算符:最终结果为boolean类型的值
优先级别:算术运算符 > 关系运算符 > 赋值运算符

逻辑运算符

逻辑与&  逻辑或|  逻辑异或^  逻辑非!  短路与&&  短路或||
逻辑运算符:最终结果为boolean类型的值
优先级别:算数运算符>关系运算符>逻辑运算符
逻辑与&,表示并且
当两个条件同时为true时,则结果为true,否则结果为false

逻辑或|,表示或者
当两个条件中有一个为true时,则结果为true,否则为false

逻辑异或
当两个条件的值不同时,则结果为true,否则为false
true ^ true ------- > false
true ^ false------- > true
fasle ^ false ------ > false
false ^ true ------ > true

逻辑非!
表示对boolean类型的值进行取反

System.out.println(!true);	//false
System.out.println(!2 > 9);//编译报错,虽然关系运算符优先级大于逻辑运算符,但是!是个特例
//在上行代码中,会先运算!2,所以编译会报错
System.out.println(!(2 > 9));	//true

短路与&&,类似于逻辑与,都表示并且
短路与、逻辑与运行结果都相同,但是执行过程可能不同,当使用短路与,并且第一个条件为false时,则结果直接为false,不在对第二个条件进行判断
建议使用短路与,效率高,避免异常的发生

System.out.println(0 > 3 && 5/0 == 0);	//false
System.out.println(0 > 3 & 5/0 == 0);	//运行时出错,显示除数不能为0

短路或,类似于逻辑或,都表示或者
短路或、逻辑或运行结果都相同,但是执行过程可能不同,当使用短路或,并且第一个条件为true时,则结果直接为true,不在对第二个条件进行判断
建议使用短路或,效率高,避免异常的发生

System.out.println(3 > 0 || 5/0 == 0);	//true
System.out.println(3 > 0 | 5/0 == 0);	//运行时出错,显示除数不能为0

三目运算符

也叫做条件运算符
语法格式:条件? 代码一:代码2

//判断12是奇数还是偶数
String s = 12 % 2 == 0 ? "偶数" : "奇数";
System.out.println(s);	//"偶数"
//判断一个数如(-3),如果大于0,则输出1,小于0,输出-1,否则输出0
int num = -3;
int i = num > 0 ? 1 : num < 0 ? -1 : 0;
System.out.println(i);	//-1

当有两个或两个条件以上,需要嵌套三目运算符

位运算符

在这里插入图片描述注意:无<<<,并且位运算是直接对二进制进行运算
左移:<< 一个数左移几位相当于让这个数乘以2的几次方(不能移的位数过多)
右移:>> 看原来数的补码的最高位是几,左端就用几补齐
无符号右移:>>> 不管原来的数的最高为是几 都用0把左端补齐

猜你喜欢

转载自blog.csdn.net/qq_42447402/article/details/86536909