运算符

一.算术运算符

1.基本四则运算符:加减乘除(+-*/%)

int a=20;
int b=10;

System.out.println(a+b);  //30
System.out.println(a-b);  //10
System.out.println(a*b);  //200
System.out.println(a/b);  //2
System.out.println(a%b);  //0  (模运算相当于数学除法中的余数

int / int 结果还是int,会向下取整

除有下面一些情况

System.out.println(5/2);        //2
System.out.println((float)5/2); //2.5
System.out.println(5/(float)2); //2.5(int和float运算时,float数据类型较大,发生隐式转换)
System.out.println((float)(5/2)); //2.0


System.out.println(10%3);    //1
System.out.println(10%-3);   //1  (商是-3,余1)
System.out.println(-10%3);   //-1 (商是-3,余-1)
System.out.println(-10%-3);  //-1 (商是3,余-1)

System.out.println(11.5%2);  //1.5

做除法和取模时,右操作数不能为0;

两侧操作数不一样时,向类型大的提升

System.out.println(1+0.2); //提升为double 输出1.2

2.增量操作符(+= -= *= %=)

这种运算符操作完成后,会将操纵的结果赋值给左操作数

这种操作符当遇到数据类型不同时,会自动强制转换成匹配的类型

3.自增/自减运算符++  --

++是给变量的值+1

--是给变量的值-1

二.关系运算符

关系运算符主要有六个== , != , <, >, <= , >=,其计算结果是true或者false

int a =10;
int b =20;

三.逻辑运算符

逻辑运算符主要有三个:&& , || , !

运算结果都是boolean

1. 逻辑与&&

int a=1;
int b=2;

System.out.println(a==1 && b==2); //左为真 且右为真 则结果为真

2.逻辑或|| 

全假为假,有真为真

3.逻辑非!

逻辑非只能用在布偶表达式中

4.短路求值

&&和||遵守短路求值的规则.

System.out.println(10 > 20 && 10/0 == 0);  //打印false
System.out.println(10 < 20 || 10/0 == 0);  //打印true

这里10/0可以正常运行没用报错,说明这个算式并没用运行

注:
对于&&,如果左值表达式为false,则表达式结果一定是false,无需计算右侧表达式。

对于||,如果左值表达式为true,则表达式结果一定是true,无需计算右侧表达式。

&和|如果表达式结果为boolean时,也表示逻辑运算,但与&& || 相比,他们不支持短路求值

System.out.println(10 > 20 & 10/0 == 0);   //程序抛出异常
System.out.println(10 > 20 | 10/0 == 0);   //程序抛出异常

四.位运算符

1.按位与&

对应位上都是1,就为1,否则为0

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

2.按位或|

对应位上都是0,就为0,否则为1

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

注:当&和|的操作数为整数(int ,short ,long ,byte) 的时候,表示按位运算,当操作数为boolean的时候,表示逻辑运算.

3.按位取反~

如果该位为0,则转为1,如果该位为1则转为0

int a=0xf;
System.out.printf("%x\n",~a)

printf能够格式化输出内容,%x表示按照十六进制输出

\n表示换行符

十六进制

1.0x前缀的数字为十六进制数字.十六进制可以看成是二进制的简化表示方法。一个十六进制数字对应4个二进制位

2.abcdef分别代表十进制中的10,11,12,13,14,15

4.按位异或^

如果两个数字二进制位相同,则结果为0,相异则结果为1

注:

n^n=0  0^n=n.

五.移位运算

都是按照比特位来运算的

1.左移<<

最左侧不要了,最右侧补0

注:向左移位时,丢失的是符号位,因此正数左移可能会变成负数

相当于乘法,左移n位,乘2的n次方

2.右移>>

最右侧不要了,最左侧补符号位,符号位是1补1是0补0

相当于除法,右移n位,/2的n次方

六.条件运算符

注意:

表达式2和表达式3的结果要是同类型的,除非能发生隐式类型转换

表达式不能单独存在,其产生的结果必须要被使用 

七.运算符的优先级

运算符是有优先级的,不必记忆,加()就完了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值