Java中的运算符

一、 算数运算符:

1.1基本四则运算符: + - * /

int a = 1;
int b = 2;
System.out.println(a + b);   //输出3
System.out.println(a - b);   //输出-1
System.out.println(a * b);   //输出2
System.out.println(a / b);   //输出0,因为在计算时是以double型进行计算,最后转为int型时造成数据丢失(b不能等于0)
System.out.println((double)a / b);  //输出0.5,将a强制转换为double型,b隐式转换为double型,最后结果也为double型

1.2 取余运算符: % 其不仅能对int型数据求模,还能对double型数据求模.

System.out.println(11.5 % 2.0);  //输出为1.5

1.3 增量赋值运算符: +=,-=,*=,/=,%=

int a = 10;
 a += 1;  //等价于a = a + 1
 System.out.println(a);  //输出11

1.4自增/自减运算符: ++/–

int a = 10;
int b = ++a;  //等价于a=a+1,b=a;
System.out.println(b);  //输出11,即b=11,a=11
int c =a++;   //等价于c=a, a=a+1
System.out.println(c);  //输出11,c=11,a=12

二、关系运算符:
主要有6个:

==  !=  <  >  <=  >=
int a = 1;
int b = 2;
System.out.println(a < b);  //输出为true

多用于比较运算,其表达式返回值都是boolean类型
三、逻辑运算符:
逻辑运算符主要有3个:

&&  ||  !

需要注意的是逻辑运算符的操作数和返回值都是boolean类型

a) && 表示逻辑与
使用规则为:若两个操作数都为true,结果为true,否则为false.

int a = 1;
int b = 2;
System.out.println(a < b && a != 0);  //输出为true

b) ||表示逻辑或
使用规则为:若两个操作数都为false,结果为false,否则为true.

int a = 1;
int b = 2;
System.out,println(a > b && a == 2);  //输出为false

c) !表示逻辑非
使用规则为:若操作数为true,结果为false;若操作数为false,结果为true.

int a = 1;
int b = 2;
System.out.println(a < b);  //输出为true
System.out.println(! a < b);  //输出为false

注意事项:
&& 和 ||遵守短路求值的规则.

System.out.println(10 > 15 &&  10 / 0 == 0);  //输出false,不会抛出异常,10 / 0 == 0并未执行到
System.out.println(10 < 15 || 10 / 0 == 0);   //输出为true,不会抛出异常,10 / 0 == 0并未执行到

即:
1)对于&&来说,若其左侧的表达式为false,则无需判定其右侧表达式,表达式的总体的值为false;
2)对于&&来说,若其左侧的表达式为true,则无需判定其右侧表达式,表达式的总体的值为true;
3)按位与(&)和按位或(|)的两侧操作数为boolean类型时,也表示操作运算符,但都不支持短路求值.

四、位运算符:
Java对数据的操作的最小单位是二进制位,而位操作表示按二进制位运算.
位运算符主要有4个: & | ^ ~

1)按位与(&)的规则:若两个数的二进制位都是1,结果为1,其他情况都为0.

int a = 10;  //10用二进制数表示为01010
int b = 20;  //20用二进制数表示为10100
System.out.println(a & b);  //结果用二进制数表示为00000,即结果为0

2)按位或(|)的规则:若两个数的二进制位都是0,结果为0,其他情况都为1.

int a = 10;  //10用二进制数表示为01010
int b = 20;  //20用二进制数表示为10100
System.out.println(a | b);  //结果用二进制数表示为11110,即结果为30

3)按位异或(^)的规则:若两个数的二进制位相同(同为1,或同为0),结果为0,其他请况为1.

int a = 10;  //10用二进制数表示为01010
int b = 20;  //20用二进制数表示为10100
System.out.println(a ^ b);  //结果用二进制数表示为11110,即结果为30

4)按位取反(~)的规则:若对一个数取反,则其二进制位若为1,则变为0;若为0,则变为1.

int a = 10;  //10用二进制数表示为01010
System.out.println(~a);  //结果用二进制数表示为10101,即结果为负数,对其除符号位外的各位取反加1得其原码为-11

五、移位运算:
在java中移位运算符有3个:<< >> >>>

  1. 左移(<<):最左则二进制位舍弃,最右侧补0.
int a = 10;   //10用二进制数表示为01010
              //20用二进制数表示为10100
System.out.println(a << 1);  //输出a左移1位的结果,为20.
/*结论:左移1位等价于原数乘以2*/

2)右移(>>):最右侧二进制位舍弃,最左侧补符号位(即正数补0,负数补1).

int a = 10;   //10用二进制数表示为01010        
System.out.println(a >> 1);  //输出a右移1位的结果,即00101,转化为十进制数表示为5
int b = -8;  //-8用二进制数表示为11000
Syetem.out.println(a >> 1);  //输出右移1位的结果,即11100,转化为十进制数表示为-4
/*结论:右移1位等价于原数除以2*/

3)无符号右移(>>>):最右则二进制位舍弃,最左侧补0.

int a = 0xffffffff;  //以0x为前缀的位十六进制数字,0xffffffff用十进制数表示为-1
System.out.printf("%x\n",a >>> 1);  //结果按十六进制输出为7fffffff,转化为十进制数表示为2147483647

六、条件运算符:
条件运算符只有一个,也是唯一一个三目运算符: 表达式1? 表达式2 :表达式3
其使用规则为:当表达式1的值为true时,整个表达式的值为表达式2的值;若表达式1的值为false时,整个表达式的值为表达式3的值.

int a = 10;
int b = 20;
int max = a > b ? a : b;  //若a大于b,max等于a;若a不大于b
System.out.println(max);  //输出为20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值