运算符

Java中的运算符分为:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 类型相关运算符

算术运算符

用于基本的数学运算:加、减、乘、除和求余
7个基本的运算符
+:加法运算符
除执行基本的加法操作外,+还可以作为字符串的连接运算符

System.out.println("hello"+"world");

-:减法运算符
执行基本的减法操作
还可以作为求负的运算符
:乘法运算符
执行基本的乘法操作
/:除法运算符
除法运算符的两个操作数都是整数类型的话,那么计算结果也会是整数,也就是把自然除法的结果截断取整。如19/4的结果是4,而不是5。如果除法运算符的两个操作数都是整数类型,则除数不可以是0,否则会引发除0异常
但是如果除法运算符的两个操作数有一个是浮点数的话,或者两个都是浮点数,那么除数则可以是0,这是因为,系统在执行的时候,会把0当成浮点数处理,并且得到的结果是正无穷大或者负无穷大

System.out.println("5.0除以0的结果是"+5.0/0);//得到的结果是Infinity(无穷大)
System.out.println("-5.0除以0的结果是"+-5.0/0);//得到的结果是-Infinity(无穷小)

%:求余运算符
求余运算也需要进行除法运算,所以同样的除数不可以是0,否则会引发除0异常,但是也同样的如果两个操作数有浮点数,则允许除数为0或者0.0,只是得到的求余运算的结果是非数:NaN。此外,0或者0.0对任何数求余都是0或者0.0.

System.out.println("0对2求余0的结果是"+0%20);//得到结果是0
System.out.println("5.0对0求余的结果是"+5.0%0);//得到结果是NaN

++:自加运算符
自加是单目运算符,只能操作一个操作数
自加运算符只能操作单个数值型(整数,浮点型都可以)的变量,不能操作常量或表达式
++分为左置++和右置++
左置++时:先加1才把操作数放入表达式(先加加再用)
右置++时:先把操作数放入表达式再加1(先用再加加)
- -:自减运算符:
同自加运算符

赋值运算符

赋值运算符用于为变量指定变量值
与C类似,Java也用=作为赋值运算符
且赋值运算符是从左向右执行计算的,程序先计算右边的值,然后得到右边的值,再吧右边的值放入左边的变量中,所以赋值运算符只能左边是变量

位运算符

位运算符有7个:
&:按位与(当两位同时为1时才返回1)
|:按位或(只要有一位为1就返回1)
~:按位非(单目运算符,将操作数的每一位(包含符号位)全部取反)
^:按位异或(相同为0,不同为1)
<<:左移运算符
>>:右移运算符
>>>:无符号右移运算符
对于移位运算符有:

  1. 对于低于int型(byte,short,char)的操作数总是先自动类型转换到int类型在开始移位
  2. 对于int类型的整数移位a>>b,当b>32时,系统先对32求余(int只有32位),得到的结果才是真正的移位数,比如:a>>33和a>>1结果一样,a>>32的结果和a一样
  3. 对于long类型的整数移位a>>b时,当b>64时,先对64求余才得到真正的移位操作数

此外,不难发现,在没有数字丢失的情况下,左移n位就相当于乘以2的n次方,右移n位就相当于除以2的n次方,且移位操作并没有改变操作数本身,只是得到一个新的运算结果,原来的操作数并不会改变

比较运算符

<:小于运算符
>:大于运算符
<=:小于等于
>=:大于等于
==:等于
!=:不等于

逻辑运算符

逻辑运算符用于操作两个boolean类型的变量或常量
&&:与(前后都是true才返回true)
&:不短路与(与&&相同,但不会短路)
||:或(只要两个有一个时true,则返回true)
|:不短路或(与||相同,但是不会短路)
!:非(之需要一个操作数,true则返回false,false则返回true)
^:异或(两个操作数不相同时返回true,相同时返回false)
&和&&区别
&总是会计算前后两个数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的操作数

三目运算符

三目运算符只有一个
(expression) ? if-true-statement : if-false-statement
先对逻辑表达式(expression)求值,如果逻辑表达式返回true,则返回第二个操作数的值;如果逻辑表达式返回false,则返回第三个操作数的值
三目运算符支持嵌套

//给定三个int型变量,求最大值和最小值
int a=10;
int b=20;
int c=30;
System.out.println("最大值是"+((a>b)?a:((b>c)?b:c)));
System.out.println("最小值是"+((a<b)?((a<c)?a:c):b));
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值