第一章 第二节 运算符和表达式
运算符的概念:
对数据进行运算的操作符
在Java中,针对运算符的操作数的多少,可以分为单目运算符(比如b++涉及到一个变量的)、二目运算符(比如num1+num2这种涉及到两个变量的)、三目运算符。
表达式的概念:
由数据/变量/常量加上运算符组成的代码
num1+num2
‘a’+10
cc=65535
表达式的特点:表达式可以对数据进行指定的运算,表达式还会有一个结果。
1.算术运算符
用于数学上的算术运算
1.1 加号+
Java中的+有三种用法:
1) 对数值型进行加法运算。(数值型:byte、short、int、long、float、double、char)
2) 正号。
3) 拼接字符串。
1.2 减号-
Java中的-有两种用法:
1) 对数值型进行减法运算。
2) 负号。
1.3 乘号*
对数值型进行乘法运算。
1.4 除号/
对数值型进行除法运算。
两个整数相除,结果也是整数,会舍弃小数部分,这叫地板除。如果除数或者被除数中有一个是小数,那结果就是小数。
如果除数或者被除数中有char类型,那么char类型会自动转化成整数的。
1.5 求余%
对数值型进行余数的运算。
注意:
1) 小数也可以求余。
2) 负数也可以求余,余数符号由第一表示式的符号决定。
1.6自增自减
对数值型(除了boolean)进行自增1或自减1的运算。
自增、自减只能作用于变量。
注意:前置和后置
1) 前置时,先对变量进行自增、自减运算,再计算整个表达式的值。
2) 后置时,先对计算整个表达式的值,再进行自增、自减运算。
举例说明:
关于多个±号连续出现
经典例题1:(面试题容易出)
解析:
经典例题2:(面试题容易出)
解析:
2.比较运算符/关系运算符
对值进行比较判断,如果表达式成立,结果为true,如果表达式不成立,结果为false。
比较运算符共有六个,其中
> , >=, <,<=四个运算符只能对数值型(除了boolean型)进行比较。
==、!=即可以对基本数据类型进行比较,也可以对引用类型进行比较。
针对基本数据类型时,比较的是值是否相等。
针对引用类型时,比较两个引用是否指向同一对象,即是否指向同一块内存空间。
3. 逻辑运算符
逻辑运算符针对布尔类型进行逻辑运算,结果也是布尔型的。
3.1逻辑与
&&、&进行逻辑与运算,当两个表达式的值都是true时,运算结果为true,否则为false。
对于表达式 A && B 、A & B运算结果如下:
3.2 逻辑或
||、|进行逻辑或运算,当两个表达式的值都是false时,运算结果为false,否则为true。
对于表达式 A || B 、A | B运算结果如下:
3.3 逻辑非
!进行逻辑非运算,当表达式为true时,结果为false,否则为true。
对于表达式!A运算结果如下:
3.4短路运算
针对&&、||两种逻辑运算,如果第一个表达式已经能够确定逻辑运算结果,则第二个表达式不再计算,这叫短路运算。
短路运算经常与自增/自减运算符同时考察
例如:
1) A && B,当A=false时,无论B值如果,计算结何都是false,B表达式将不再执行。
2) A || B,当A=true时,无论B值如何,计算结果都是true,B表达式也不再执行。
经典例题3:
对比例题4:
4.位运算符
在二进制的基础上对数值型进行运算。
(学习一下二进制是如何转换成十进制的;关于二进制的运算,全部是0的时候那么二进制的值就是0&java基础运算符例子#xff1b;在java中的整数里面,是要分整数和负数的,所以我们拿出二进制的第一位做符号位,符号位为0代表是非负数,符号位为1代表是负的)
比如图中红色部分;以及本题的代码按位与、按位或、按位异或、按位取反的输出结果:
左移位:
且有如下结论:
右移位:每右移一位,相当于除以2;
总结:
4.1按位与
&对数值进行按位与运算,当两个数的对应位都是1时,结果对应位为1,否则为0。
4.2按位或
|对数值进行按位或运算,当两个数的对应位都是0时,结果对应位为0,否则为1。
4.3按位异或
^对数值进行按位异或运算,当两个数的对应位不同时,结果对应位为1,否则为0。
4.4按位取反
~对数值进行按位取反运算,当操作数的对应位为1时,结果的对应位为0,否则为1。
4.5左移位
<<对数值进行向左移位的操作,第一操作数的所有位向左移动指定位数,超出位范围的数据丢弃,右侧补0。
左移位可以快速完成对数据乘 2n的运算。
4.6右移位
>>对数值进行向右移位的操作,第一操作数的所有位向右移动指定位数,超出位范围的数据丢弃,左侧补符号位。
右移位可以快速完成对数据除以 2n的运算。
4.7无符号右移位
>>>对数值进行向无符号右移位的操作,第一操作数的所有位向右移动指定位数,超出位范围的数据丢弃,左侧补0。
5.赋值运算符
5.1简单赋值=
= 赋值,将右边表达式的值,存放到左边的变量中
=可以为变量/常量赋值为相应类型的值。
当赋值运算符与二目运算符进行组合,就会变成复合赋值运算符,比如:+=
赋值表达式的值为变量最终所赋的值。
赋值运算符要求赋值时前后的数据类型必须匹配或可以自动转换。
但是:
1) byte,short,char可以赋值为表示范围的整数。
2) 表达式中的byte,short,char会先转换为int再进行计算。
3) 纯常量运算会在编译阶段进行。
5.2复合赋值
当赋值运算符=与二目运算符进行组合,就会变成复合赋值运算符,比如:+=;A+=B相当于A=A+B;
常见的二目运算符与=还可以结合成复合赋值运算符。
例如:+=,-=,*=,/=,%=,&=,|=,<<=,>>=,>>>=。
A op= B;相当于 A = A op B。(op 是一个运算符。运算符可以是多种类型的。)
注意:复合赋值运算符会进行隐式的强制类型转换。
比如:
解析:s2=s2+10;这个是错误的写法;因为s2是short类型,s2+10在运行过程中,short类型转成了int类型,所以s2+10的结果是int类型,不能赋值给s2本身是short类型的
s2=s1+s2也是错误的,同理如上,相当于s2=(int)s1+(int)s2;右面是int类型,左边是short类型,不能这样赋值。
6.三目运算符/三元运算符/条件运算符
A ? B : C
1) 条件A必须为布尔类型
2) 条件成立时,表达式的值为B的值。
3) 条件不成立时,表达式的值为C的值。
4) B与C的类型没有限定。
例题:
7.运算符的优先级
先乘除,后加减,有括号先算括号
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18499.html