java运算符

来源:互联网 发布:乱世佳人电影结局知乎 编辑:程序博客网 时间:2024/06/14 11:00

java的运算符

  1. 算数运算符:+ - * / % ++ --
  2. 赋值运算符:= += -= *= /= %=
  3. 关系运算符:> < >= <= == !=
  4. 逻辑运算符:! & | ^(取反) && || 
  5. 位运算符:! & | ~ >> << >>>(无符号右移)字
  6. 符串连接符号:+ 

算数运算符: 

      对于+ 、-、*、/ 这里不做介绍。

  / (除号的右边不能为0) 

  ++i/--i: 先自增/自减再参与运算

  i++/i--: 先参与运算再自增/自减

赋值运算符: 

         += --> a+=b;---> a = a+b;
  -= --> a-=b;---> a = a-b;
  *= --> a*=b;---> a = a*b;
  /= --> a/=b;---> a = a/b;
  %= --> a%=b;---> a = a%b;
 注意:
   short b = 2;
   b = b + 3;//两次运算 第一次 相加 第二次 赋值 不会自动转换
   b+=3; //这是一次运算 只做了一次赋值运算 会自动转换
   System.out.println(b)// b = b + 3;会报错,因为3默认为int型,类型不匹配

示例:

 

class  Demo_1{public static void main(String[] args){int a = 1;int b = 2;/*int aplus = a++;//先赋值再自增int bplus = b--;System.out.println(a+" "+b);//a=2 b=1System.out.println(aplus+" "+bplus);//aplus=1 bplus=2*/int aplus1 = ++a;//先自增后赋值int bplus1 = --b;System.out.println(a+" "+b);//a=2 b=1System.out.println(aplus1+" "+bplus1);//aplus=2 bplus=1}}empty int a = 2; int b = 3; int c = ((a++)+(++b))*2 + (--a)%(b++) - (++a)*3 + (--b)/(--a);   /*           ((a++)+(++b))*2   = 12     a = 3 b = 4          (--a)%(b++)  = 2%4 = 2     a = 2 b = 5          (++a)*3  = 9               a = 3 b = 5          (--b)/(--a) = 4/2 =2       a = 2 b = 4          */class Demo_3 {public static void main(String[] args) {/* short b = 2; b = b+3;//两次运算先相加后赋值   不会自动转型 b+=3;//一次运算 会自动转型 *//*int a = 12;                   结果1. a+=a;  24 2. a-=2;  10        3. a*=2+3; 60  a = a*(2+3)4/ a/=a+a; 0*/}}


关系运算符: 

关系运算符的结果只有true false逻辑运算符:  

  & 两边都是真,输出才为真

  | 两边只要有一个真,输出为真

  ^ 异或相同为false,相反则为true。

  逻辑表达式的值 真|假 


        两种逻辑与(&&和&)的运算规则基本相同,两种逻辑或(||和|)的运算规则也基本相同。

  区别:

  &和|运算是把逻辑表达式全部计算完,而&&和||运算具有短路计算功能。 

  对于&来说,当左侧条件为false,右侧要继续计算, 而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,即出现短路现象。 

  短路计算:是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。

  对于&&来说,只要运算符左侧的值为false,则因无论运算符右侧的值为true或为false,其最终结果都为false。 所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;

  对于|来说,当左侧条件为true,右侧要继续计算。

  对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。 所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。 

下面以| 和||的举例,根据对a,b的结果进行分析比较|与||的不同:

  

a = 3;b = 2;//第一个表达式为真,后面的需要继续运行boolean b11 = (a--)/(b++)<2 | (--a)*(--b)!=4 | (a++)%(b--)==2;//               2   3            1  2            2  1System.out.println(b11+"\t"+a +"\t"+b);//true 2 1a = 3;b = 2;//在(a--)/(b++)<2 为真,后面的表达式不需要再运行boolean b12 = (a--)/(b++)<2 || (--a)*(--b)!=4 || (a++)%(b--)==2;//   2 3System.out.println(b12+"\t"+a +"\t"+b);//true 2 3


 位运算符: 

          速度最快 

    << 左位移运算符 

    >> 右位移运算符 带符号右移

    >>>(无符号右移) 左侧补位全部补0 

    & 按位与 0101&1001 = 0001 

    | 按位或 0101|1001 = 1101

    ^ 按位异或 0101^1001 = 1100 一个数异或同一个数两次,结果是自身 

    ~ 按位取反 

               将一个数左移"<<"会使该值乘以2的移动位数次幂。 

     将一个数右移>>"会使该值除以2的移动位数次幂 左侧补位按最高位

     字符串连接符号:字符串数据和任何数据使用+都是相连接的意思,最后都会变成字符串。

     三元(目)运算符:格式:关系表达式 ? 表达式1 : 表达式2;

                

字符串连接符号: 

      + 
字符串数据和任何数据使用 + 都是相连接的意思,最终都会变成字符串

System.out.println("6+6"+6+6);//输出结果为6+666

         System.out.println(6+6+"6+6");//输出结果为126+6         

原创粉丝点击