四、运算符

一、算术运算符

+ 求和
- 相减
* 乘积
/ 商
% 求余【取模】
++ 自加1
– 自减1
注:运算符有优先级,不确定时可以加括号。

int k=1;
k++;
System.out.println(k);
int m=1;
int n=m++;
++m;
System.out.println(m);
System.out.println(n);
int p=1;
int q=++p;
System.out.println(q);
int t=1;
System.out.println(t++);
System.out.println(t);

四、运算符_第1张图片

故:
①++运算符可以出现在变量前,也可以出现在变量后,无论是变量前还是变量后,只要++运算结束,该变量中的值一定会自加1。
②++出现在变量后,先做赋值运算,再对变量种保存的值进行自加1.
③++出现在变量前,先进行自加1,再进行赋值操作。
④println底层其实相当于有一层赋值。

二、关系运算符

> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
注:=是赋值运算符,==是关系运算符
关系运算符的运算结果一定是布尔类型:true/false
关系运算符比较的是变量中所保存的值之间的关系

三、逻辑运算符

& 逻辑与
| 逻辑或
! 逻辑非
^ 逻辑异或 (两边的算子不一样结果为真)
&& 短路与
|| 短路或

1.逻辑运算符两边的算子必须是布尔类型,并且逻辑运算符最终的运算结果也为布尔类型。
2.短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象。
3.短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象。
4.什么时候发生短路现象?
第一个表达式执行结果为true,会发生短路或。
第二个表达式执行结果为false,会发生短路与。

//逻辑与和短路与
int x=10;
int z=10;
int y=8;
System.out.println(x<y & ++x<y);
System.out.println(x);
System.out.println((z<y) && (++z<y));
//x
System.out.println(z);

四、运算符_第2张图片
在实际开发中短路与使用比逻辑与更多。但在某些特殊情况中,要求运算符两边的算子全部执行,需使用逻辑与。

四、赋值类运算符

1.基本的赋值运算符 =
2.扩展的赋值运算符
+=
-=
*=
/=
%=

1.赋值类运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边的变量。
2.扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的类型是byte类型,最终该变量的数据类型还是byte类型。

byte b=10;
//b=b+5;编译错误:b+5的类型是int类型,b的类型是byte
b=(byte)(b+5);
//byte b=15;编译通过
System.out.println(b);

byte c=10;
c+=5;
System.out.println(c);

byte z=0;
z+=128;//进行了强制类型转换,损失精度
System.out.println(z);

四、运算符_第3张图片

五、字符串连接运算符

+运算符在java语言中有两个作用:
加法运算,求和
字符串的连接运算

1.当“+”运算符两边的数据都是数字时,一定是进行加法运算。
2.当“+”运算符两边的数据只要有一个数据是字符串,一定会进行字符串连接运算,并且连接运算之后的字符串结果还是一个字符串类型。
3.在一个表达式中可以出现多个加号,在没有添加小括号的前提下,遵循自左向右的顺序依次计算。

int a=10;
int b=20;
System.out.println("10+20="+a+b);
System.out.println("10+20="+(a+b));
System.out.println("a+20="+(a+b));
System.out.println(a+"+"+b+"="+(a+b));

四、运算符_第4张图片

//定义一个String类型的变量(引用数据类型)
String user="jiyu";
System.out.println("take care of yourself,"+user+",and be well");

在这里插入图片描述

六、三元运算符

语法规则:布尔表达式?表达式1:表达式2
当布尔表达式的结果为true时,选择表达式1的运算结果作为整个表达式的结果,当布尔表达式的结果为false时,表达式2的结果为整个表达式的结果。

//10;编译错误,不是一个完整的语句
//'男';编译错误,不是一个完整的语句

//boolean sex=false;
//sex?'男':'女';编译错误,不是一个完整的语句

boolean sex=false;
char c=sex?'男':'女';
System.out.println(c);

//char c1=sex?"男":'女';编译错误,类型不兼容
System.out.println(sex?"男":'女');//编译通过,因为println包容性比较强,大概可以这么理解吧

七、位运算符

& 按位与(AND)
| 按位或(OR)
^ 按位异
~ 按位非(NOT)
>> 右移
>>> 右移,左边空出的位以0填充
<< 左移

你可能感兴趣的:(JAVA学习,java)