15036188778

您所在位置: 首页> 学习课程> java培训 | Java中的运算符你了解多少?

java培训 | Java中的运算符你了解多少?

发布百知教育 来源:学习课程 2019-10-12

为了更好的帮助大家便利的学习java这门编程语言,和更好的巩固java语言学习中的基础知识,我们特意为大家精心制作了java培训教程。


本教程精选java核心内容,结合实例,循序渐进的向大家介绍Java语言。以零基础讲解为基础,用实例引导大家学习,深入浅出的向大家介绍java的相关知识和实战技能。

Java入门(9)1 逻辑运算符 【||  &&  !】


||【逻辑或】--[短路或]


格式:【表达式A  ||  表达式B】 ,在某种情况下只判断表达式A,而不用判断表达式B,就能够得到这个逻辑运算的结果【短路】   

||【逻辑或】的真值表

Op1   ||  Op2

True   ||  true    true

True   ||  false    true

Fales   ||  true    true

False   ||  false    false

当||【逻辑或】的左边表达式是true的时候,||【逻辑或】的右边表达式是不用计算。

 

&&【逻辑与】--[短路与]

格式:【表达式A  &&  表达式B】 ,在某种情况下只判断表达式A,而不用判断表达式B,就能够得到这个逻辑运算的结果【短路】   

&&【逻辑与】的真值表

Op1   &&  Op2

True   &&  true    true

True   &&  false    false

Fales   &&  true    false

False   &&  false    false

当&&【逻辑与】的左边表达式是false的时候,&&【逻辑或】的右边表达式是不用计算。


例如:

public  class  LuoJiDemo{

  public  static  void  main(String  args[]){

    int  num1=10;

    int  num2=0;

    //java.lang.ArithmeticException: / by zero

    //System.out.println(num1+"/"+num2+"="+(num1/num2));

    //  ||【逻辑或】--[短路或]

    // ||【逻辑或】的左边表达式是true的时候,||【逻辑或】的右边表达式是不用计算。

    //boolean b=(num1>num2) || ((num1/num2)>1);

    //boolean b=(num1<num2) || ((num1/num2)>1);

    //System.out.println("b=="+b);

 

   // &&【逻辑与】--[短路与]

   //&&【逻辑与】的左边表达式是false的时候,&&【逻辑或】的右边表达式是不用计算。

     //boolean b=(num1<num2) && ((num1/num2)>1);

     boolean b=(num1>num2) && ((num1/num2)>1);

     System.out.println("b=="+b);

 }

}

 

![逻辑非]   求反    !true== false    !false==true


2.位运算 【将运算数据转换成2进制,逐位运算】


1.2进制--0101001010----8位2进制为1个字节


2.2进制与10进制的换算


二进制中的原码、反码、补码

对于有符号数而言:

二进制的最高位是符号位:0表示正数,1表示负数

00000001 --  正数     10000001 --  负数

正数的原码、反码、补码都一样;

5正数 --  00000101【原码】    00000101【反码】  00000101【补码】

负数的反码 = 它的原码符号位不变,其他位取反(0 ->1 ; 1->0 );

负数的补码 = 它的反码 +1;

-5负数 --  10000101【原码】    11111010【反码】      11111011【补码】

0的反码、补码都是0;

在计算机运算的时候,都是以补码的方式来运算的;

8421码标准

--- ...64  32  16  8  4  2  1

7   0   0   0   0  1  1  1

13  0   0   0   1  1  0  1


java语言中六种位运算符:

1.& 按位与  只有对应的两个二进位均为1时,结果位才为1 ,否则为0

   1 & 1==1  1& 0==0   0&1 ==0  0&0 ==0

   10  &  3 ==  2

   0000 1010

   0000 0011

   0000 0010 -- 2  

2.| 按位或  只要对应的二个二进位有一个为1时,结果位就为1.

   1 | 1==1  1| 0==1   0|1 ==1  0|0 ==0

   10  |  3 ==  11

   0000 1010

   0000 0011

   0000 1011 --11

3.^ 按位异或  当两对应的二进位相异时,结果为1

     1 ^ 1==0  1^ 0==1   0^1 ==1  0^0 ==0

     10  ^  3 ==

     0000 1010

     0000 0011

     0000 1001 ---9

4.~取反

3  --   0000 0011 ---  1111 1100[补码]  --  -4

5.<<左移位  向左移动指定的位数

     3  <<  4  ==48

     3  0000 0011

        00110000

     3  <<  2    00 001100  --12    

6.>>右移位 向右移动指定的位数

     3  >>  2

     3  0000 0011

        000000 00

     3  >>  2    00000000  --0

 

a=15  00001111  >>  2  ==3

       00000011  ===3

例如:

 System.out.println("位运算【&   |  ^  ~  <<  >> 】");

 System.out.println("10 & 3 =="+(10&3));

 System.out.println("10 | 3 =="+(10|3));

 System.out.println("10 ^ 3 =="+(10^3));

 System.out.println("~3 =="+(~3));

 System.out.println(" 3<<2 =="+(3 << 2));

 System.out.println(" 15>>2 =="+(15 >>2));

 

面试题:int a=2*8怎样运算效率最快?

   2 <<3  效率最快

 

3.表达式中自动提升数据结果的数据类型


在程序中没有变量保存的整数,都是int型

在程序中没有变量保存的小数,都是double型

例如:

public  class  BiaoDaShiDemo{

  public  static  void  main(String  args[]){

   byte  b1=12;

   short  s1=23;

   int res = b1+s1+100; //这个表达式的结果是int

   double dou=b1+s1+100+12.5; //这个表达式的结果是double

   System.out.println("res =="+res );

   System.out.println("dou=="+dou );

 }

}


表达式的结果的数据类型是由表达式中最高的数据类型决定。



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


上一篇:java培训 | 玩转Mysql系列 - 第22篇:mysql索引原理详解

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

相关推荐

www.baizhiedu.com

有位老师想和您聊一聊

关闭

立即申请