Java基础之运算符

Java 运算符

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java运算符按功能可分为:算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符。

算数运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

表格中的实例假设整数变量A的值为10,变量B的值为20:

操作符描述例子
+加法--相加运算符两侧的值A+B等于30
-减法--左操作数减去右操作数A-B等于-10
*乘法--相乘操作符两侧的值A*B等于200
/除法--左操作数除以右操作数B/A等于2
%取余--左操作数除以右操作数的余数B%A等于0
++自增--操作数的值加1B++或者++B等于21(注:B++和++B在参与运算时有区别,具体见下文)
--自减--操作数的值减1B--或者--B等于19(注:B--和--B在参与运算时有区别,具体见下文)

 

 

 

 

 

 

 

 

 

 

注意:

1、加法(+):

加法运算符不但用于计算两个数值型数据的和,还可用于字符串对象的连接。当+运算符的两个操作数一个是字符串而另一个是其他数据类型,系统会自动将另一个操作数转换成字符串,然后再进行连接

2、除法(/)

除法运算符,除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果也是整数,就是将自然除法的结果截断取整。如果除法运算符的两个操作数都是整数,则除数不可以是0,否则将引起除零异常。

3、取余(%)

       求余运算的结果不一定总是整数,它的计算结果是使用第一个操作数除以第二个操作数,得到一个整数的结果后剩下的值就是余数 。如果取余运算的两个操作数都是整数类型,则计算结果也是整数类型,除数不可以是0,否则将会引发除以0异常;如果除法的两个操作数有一个或两个是浮点型,则结果也是浮点型,此时除数允许是0,或者是0.0,得到的结果是非数:NaN.0或0.0对0以外的任何数求余都将得到0或0.0;只有被除数是负数时,余数才是负的。

4、自加(++)与自减(--)

1.自加和自减是一元运算符,只能操作是个操作数

2.自加和自减参与运算

放在操作数的前面,先自增或者自减,然后再参与运算

放在操作数的后面,先参与运算,再自增或者自减

下面以++为例,--同理

关系运算符

关系运算符用来判断两个变量或者常量的大小,关系运算符的结果是一个boolean值( true或者false)。

>、<、>=、<=运算符优先级别高于==、!=

>、<、>=、<=运算符只支持数值类型的数据比较

下列为Java支持的关系运算符

假设表格中的实例整数变量A的值为10,变量B的值为20;

 

运算符描述例子
==检查如果两个操作数的值是否相等,如果相等则条件为真。(A==B)为假
!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A!=B)为真
>检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A>B)为假
<检查左操作数的值是否小于右操作数的值,如果是那么条件为真。(A<B)为真
>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A>=B)为假
<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。(A<=B)为真

 

 

 

 

 

 

 

 

 

 

逻辑运算符

 逻辑运算符用于操作两个boolean类型的变量或者常量,逻辑运算符的运算对象只能是布尔型数据,并且运算结果也是布尔型数据。

开发中主要用到的逻辑运算符包括如下3种:逻辑非(!)、短路与(&&)、短路或(||)。

如果第一个操作数已经能确定表达式的值,第二个操作数就不必计算了;优先级别:!>&&>||

下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假

操作符描述例子
&&称为逻辑与运算符(短路与),当且仅当两个操作符都为真,条件才为真。(A&&B)为假
||称为逻辑或操作符(短路或),如果任何两个操作数任何一个为真,条件为真。(A||B)为真
!称为逻辑非运算符,用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false!(A&&B)为真

 

 

 

 

 

位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。

位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:

操作符描述例子
&如果相对应位都是1,则结果为1,否则为0.(A&B),得到12,即0000 1100
|如果相对应位都是0,则结果为0,否则为1。(A | B)得到61,即 0011 1101
^如果相对应位值相同,则结果为0,否则为1。(A ^ B)得到49,即 0011 0001
~按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即1100 0011
<<按位左移运算符。左操作数按位左移右操作数指定的位数。A << 2得到240,即 1111 0000
>>按位右移运算符。左操作符按位右移右操作数指定的位数。A >> 2得到15即 1111
>>>按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A>>>2得到15即0000 1111

 

 

 

 

 

 

 

 

 

 

 

 

编译运行结果:

赋值运算符

赋值运算符用来为变量指定新值。

赋值运算符格式:变量名=表达式;其功能是将等号右边表达式的值赋给左边的变量。

赋值运算符必须是类型兼容的,即左边的变量必须能够接受右边的表达式的值。否则会产生语句编译错误。例如:int i=2.12;

因为2.12是double类型,double转换到int会产生精度丢失。

使用等号(=)可以给对象赋值,这称为引用赋值,将右边对象的引用值(地址)赋值给左边的变量,两个变量地址相同,即指向同一个对象,对象引用赋值和基本数据类型的拷贝赋值是不一样。

赋值运算符由等号(=)基本运算符和扩展的赋值运算符组成。

下面是Java语言支持的赋值运算符:

操作符描述例子
=简单的赋值运算符,将右操作数的值赋给左侧操作数C = A + B将把A + B得到的值赋给C
+=加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C + = A等价于C = C + A
-=减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C - = A等价于C = C - A
*=乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C * = A等价于C = C * A
/=除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C / = A,C 与 A 同类型时等价于 C = C / A
(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数C%= A等价于C = C%A
<<=左移位赋值运算符C << = 2等价于C = C << 2
>>=右移位赋值运算符C >> = 2等价于C = C >> 2
&=按位与赋值运算符C&= 2等价于C = C&2
^=按位异或赋值操作符C ^ = 2等价于C = C ^ 2
|=按位或赋值操作符C | = 2等价于C = C | 2

 

 

 

 

 

 

 

 

 

 

 

 

编译执行结果:

 

 

条件运算符

条件运算符也叫三目运算符

语法:

实例:

运算符优先级

单目运算符包括! ~  ++  --,优先级别高

优先级别最低的是赋值运算符

可以通过()控制表达式的运算顺序,()优先级最高

从右向左结合的只有赋值运算符、三目运算符和单目运算符

算术运算符>关系运算符>逻辑运算符

下表为运算符优先级别列表

优先级运算符简介结合性
1[ ] . ( ) 方法调用,属性获取从左向右
2!、~、 ++、 --一元运算符从右向左
3* 、/ 、%乘、除、取模(余数)从左向右
4+ 、 -加法、减法从左向右
5<<、 >>、 >>>左位移、右位移、无符号右移从左向右
6< 、<= 、>、 >=、 instanceof小于、小于等于、大于、大于等于,
对象类型判断是否属于同类型
从左向右
7== 、!=2个值是否相等,2个值是否不等于。
下面有详细的解释
从左向右
8&按位与从左向右
9^按位异或从左向右
10|按位或从左向右
11&&短路与从左向右
12||短路或从左向右
13?:条件运算符从右向左
14=、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>=混合赋值运算符从右向左

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

想要获得更多知识可关注公众号IT-develop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

____噓丶低調点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值