黑马程序员——Java基础---语法<二>

——– android培训java培训、期待与您交流! ———-

运算符

总览

Java 中运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有一元运算符、二元运算符和三元运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。

运算符等级

运算符等级

1、位运算符

1.1、与运算符 &

与运算符用符号“&”表示,其使用规律如下:
两个操作数中位都为1,结果才为1,否则结果为0,public class data13
int a=2;
int b=3;
a 和b 与的结果是:2

下面分析计算过程:
“a”的值是129,100
“b”的值是128,101 &
a 和b 与计算的结果100
也就是 2

实用性:(清零)、(按位取数)

(1)、清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)、取一个数中指定位 
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。 例:
X=00010100; 取X的后4位
     00000000  00000000  00000000  00010100 
     00000000  00000000  00000000  00001111
     00000000  00000000  00000000  00000100
1.2、或运算符 |

或运算符用符号“|”表示,其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。
int a=2;
int b=3;
a 和b 或的结果是:3
下面分析计算过程:
“a”的值是2,100
“b”的值是3,101 |
a | b 计算的结果 101
也就是 3

1.3、非运算符 ~

非运算符用符号“~”表示,其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。
int a=2;
2取~00000000 00000000 00000000 00000100 取~
-3 = 11111111 11111111 11111111 11111011
也就是 - 3

1.4.异或运算符 ^

异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子。
int a=2;
int b=3;
a 和b 或的结果是:3

下面分析计算过程:
“a”的值是 2,100
“b”的值是 3,101 取^
a | b 计算的结果 101
“b”的值是 3,101 取^
最终的结果是 2 , 100

实用性: 通过^ 来交换数值可以实现不扩充内存,不超上限 如:

Int a = 2 ;
Int b = 3;
a = a^b;  a=2^3     =101
b = a^b;  b=2^3^3   =100
a = a^b;  a=2^3^2   =101

2、算术运算符

所谓算术运算符,就是数学中的加、减、乘、除等运算。

2.1、普通算术运算符

运算符
这些操作可以对不同类型的数字进行混合运算,为了保证操作的精度,系统在运算过程中数据会自动向上转型。

2.2、递归类算术运算符

递归类运算符

注意:
++x 因为++在前,所以先加后用。--x 同理
x++ 因为++在后,所以先用后加。x-- 同理
实用性:
++ 由于是自增运算,所以很多情况下不会被转型,推荐使用

3、移位运算符

移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。
包括 << 、>> 、>>> 、<<<

位移类运算符

注:
(1)、x<<y 相当于 x*2y ;x>>y相当于x/2y从计算速度上讲,移位运算要比算术运算快。
(2)、如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。负数二进制首位是1

4、关系运算符

Java具有完备的关系运算符,这些关系运算符同数学中的关系运算符是一致的。具体包括:
< 、> 、<=、>=、!= 、==、如下:
关系运算符

需要注意的是:关系运算符中的”==”和”!=”既可以操作基本数据类型,也可以操作引用数据类型。操作引用数据类型时,比较的是引用的内存地址。所以在比较非基本数据类型时,应该使用equals方法。

注:
instanceof操作符用于判断一个引用类型所引用的对象是否是一个类的实例。形式如下:
Obj  instanceof  ClassName      或者    obj  instanceof  InterfaceName
返回值是 true 跟 false 

5、逻辑运算符

除了 常见的 & 、|、还有&&、||

这里写图片描述

    1、当&两边是整数时执行的是位运算,而两边是boolean值时执行的是逻辑运算,
    同理 | 也是。
    2、在运用 && 或者 || 进行相关的操作,会有“短路”现象。代码如下:
    if(1==1 && 1==2 && 1==3){  }
    代码从左至右执行,执行第一个逻辑表达式后:true && 1==2 && 1==3
    执行第二个逻辑表达式后:true && false && 1==3
    因为其中有一个表达式的值是false,可以判定整个表达式的值是false,就没有必要执行第三个表达式了,所以java虚拟机不执行1==3代码,就好像被短路掉了。逻辑或也存在“短路”现象,当执行到有一个表达式的值为true时,整个表达式的值就为true,后面的代码就不执行了。

示例应用:
if(str!=null && str.trim().length()>0)
如果str为null,那么执行str.trim().length()就会报错,短路现象保证了我们的代码能够正确执行。
在书写布尔表达式时,首先处理主要条件,如果主要条件已经不满足,其他条件也就失去了处理的意义。也提高了代码的执行效率

6、条件运算符

三目运算符是一个特殊的运算符,实际是 if {}else{}的 缩写形式 它的语法形式如下:
布尔表达式?表达式1:表达式2 A?B:C
运算过程:
如果布尔表达式的值为true,就返回表达式1的值,否则返回表达式2的值,例如:

int sum=90;
String str=sum<100"失败""成功";
//等价于:
String str=null;
if(num<100)
{
    str="失败";
}
Else
{
    str="成功";
}
注:
A?B:C 运算符和if……else语句相比,前者使程序代码更加简洁。清晰明确

7、赋值运算符

赋值运算符是程序中最常用的运算符了,对我来说也是最容易犯晕的

这里写图片描述

8、其他

8.1、字符串运算符:

“+” 可以连接不同的字符串。常见格式 “abc”+” ”+ 123456 ==” abc 123456”

8.2、转型运算符:

() 可以将一种类型的数据或对象,强制转变成另一种类型。如果类型不相容,会报异常

8.3、括号运算符

()运算等级一级 、[ ] 运算等级二级

——– android培训java培训、期待与您交流! ———-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值