摘要
上一期呢,介绍的是Java编程基础里边的关键字与转义字符,运算符中的,算数运算符,赋值运算符,关系运算符逻辑运算符,这一期呢接着将给大家介绍上一期没有介绍的位运算和变量交换!
1、位运算符
对两个操作数中的每一个二进制位都进行运算,在计算机中都是位运算,位运算的效率是最高的
位运算符功能:
1、按位取反~ 取反很好理解 1取反就是0 0取反就是1
2、按位与& 两个都是1才为1 其余为0
3、按位或| 有一个为1就为1
4、按位异或^ 相同为0 不同为1
2、位移运算符:
左移:"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0
带符号右移:"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位
无符号右移:"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0
100 00000000 00000000 00000000 01100100
左移三位低位
100<<3 00000000 00000000 00000011 00100000
带符号右移三位 最高位补原来的符号位因为这三个0右移了所以补了三位数又因为原来是0所以补0
100>>3 00000000 00000000 00000000 00001100
无符号右移3三位 因为是无符号右移所以不管以前是几移走之后就补零
100>>>3 00000000 00000000 00000000 00001100
为了方便大家理解 上-100
-100 11111111 11111111 11111111 10011100
这个是左移 不解释
-100<<3 11111111 11111111 11111100 11100000
带符号右移 因为原先的最高位就是1 所以补1
-100>>3 11111111 11111111 11111111 11110011
无符号右移 就补零就完事
-100>>>3 00011111 11111111 11111111 11110011
面试题:以最快的速度计算8*4结果?
00000000 00000000 00000000 00001000 8
10000000 00000000 00000000 00100000 32
使用位移的方法是最快的。
int result = 8<<2;
左移算法:位移数作为2的次幂与操作数相乘
10<<2=40
40/4
右移算法:操作数除以位移数的2次幂
40>>2
通过键盘输入,初始化两个数将这两个数据交换位置后,输出显示交换后的数据。
这是三个不通过第三个变量 交换两个数的方法,但是最保险的还是通过第三个变量来交换!第二种第三种方法,大家可以自己试试
3、三目运算符:
为啥它叫三目运算符呢,因为他操作数有三个。首先它的格式:X?Y:Z
X是一个表达式计算结果为boolean类型的,先计算x,如果为true 则整个三目运算符的结果表达式Y的值,否则整个运算结果为表达式Z的值。
Example:从键盘输入一个成绩,判断改分数是否及格
Y Z是什么类型,你就用什么类型接收哦
4、运算符的优先级:
加括号的一定先运算,它的优先级最高了,那么多怎么记呢!要是搞不清的话只能是把这个表保存下,用的时候查一下,或者你先运算谁的时候加括号!!
Example:
a=++a+(b--)+(a-b)+b
a=2+2+1+1=6
5、if分支语句:
if分支语句和三目运算符很像,但是那比三目运算符更高级些,
格式:
if(表达式){
执行语句;
}else{
执行语句;
}
if条件结构是根据条件判断之后再做处理
执行过程:当程序执行到if时,首先会判断( )里面表达式的值,如果表达式的值为true,那么就执行( )后{ }里的执行语句,如果为false,那么就执行else后面{ }里的执行语句
()里的运算符基本上都是这几种& ,| ,^ ,&& ,|| , ! ,==
Example:
输入一个字符,判断是大写字母还是小写字母,输出提示信息
好像没有nextChar这个方法,可以用 next().charAt(0)取第一个字符。
为什么说他和三目运算更高级呢,是因为他不止2个分支,可以多个分支呀
if(表达式1){
执行语句1;
}else if(表达式2){
执行语句2;
}else if(表达式3){
执行语句3;
}else{//可有可无
执行语句4;
}
执行过程:当程序执行到if时,首先会判断( )表达式1的值,如果为true,那么就执行{ }里面的执行语句1;
然后这个if-else if结束,如果表达式1的值为假,那么就会继续向下执行,else if后面的表达式2,为真,就执行语句2,为假,就继续向下执行,直
到为真,如果所有表达式的值都不为真,那么就会执行else后面{ }里的执行语句,然后整个if-else if结束。
Example:
给出一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上输出’A’,80~89分输出’B’,70~79分输出’C’,60~69分输出’D’,60分以下输出‘E’。
java培训班:http://www.baizhiedu.com/java2019