400-616-5551

您所在位置: 首页> 学习课程> java培训班 | java编程基础:java位运算符

java培训班 | java编程基础:java位运算符

发布百知教育 来源:学习课程 2019-11-25

摘要

上一期呢,介绍的是Java编程基础里边的关键字与转义字符,运算符中的,算数运算符,赋值运算符,关系运算符逻辑运算符,这一期呢接着将给大家介绍上一期没有介绍的位运算和变量交换!

1、位运算符
对两个操作数中的每一个二进制位都进行运算,在计算机中都是位运算,位运算的效率是最高的

位运算符功能:

1、按位取反~  取反很好理解 1取反就是0 0取反就是1

2、按位与&       两个都是1才为1 其余为0

3、按位或|        有一个为1就为1

4、按位异或^    相同为0 不同为1


java培训班


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


java培训班



通过键盘输入,初始化两个数将这两个数据交换位置后,输出显示交换后的数据。


java培训班


这是三个不通过第三个变量 交换两个数的方法,但是最保险的还是通过第三个变量来交换!第二种第三种方法,大家可以自己试试


3、三目运算符:


为啥它叫三目运算符呢,因为他操作数有三个。首先它的格式:X?Y:Z


X是一个表达式计算结果为boolean类型的,先计算x,如果为true 则整个三目运算符的结果表达式Y的值,否则整个运算结果为表达式Z的值。

Example:从键盘输入一个成绩,判断改分数是否及格


java培训班




Y Z是什么类型,你就用什么类型接收哦


java培训




4、运算符的优先级:




java培训班



加括号的一定先运算,它的优先级最高了,那么多怎么记呢!要是搞不清的话只能是把这个表保存下,用的时候查一下,或者你先运算谁的时候加括号!!


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培训班


java培训班:http://www.baizhiedu.com/java2019



上一篇:Java程序员修炼之路:如何不接私活也能月薪20K

下一篇:应届生去公司找个Java程序员的职位需要什么技能?

相关推荐

www.baizhiedu.com

有位老师想和您聊一聊

关闭

立即申请