运算符号

运算符号

算术运算符:+,-,*,/,%(余数),++(自增),--(自减)

赋值运算符:=

关系运算符:>,<,>=,<=,==,!= instanceof

逻辑运算符:&&,||,!(与,或,非)

位运算符:&,|,^,~,>>,<<,>>>

条件运算符:?,:

扩转赋值运算符:+=,-=,*=,/=

 

加减乘除

操作时需要注意运算结果是否会有浮点数

计算中,如果有高级的数据类型参与,那计算出来的结果类型,一定是最高的那个数据类型,默认为int类型

public class Dem1 {
   public static void main(String[] args) {
       //二元运算符
       int a = 10;
       byte b = 20;
       int c = 25;
       long d = 25;//long类型是他们中最高的类型,所有有long类型参与的计算,结果都为long,否则就默认int类型

       System.out.println(a+b);//结果为 30
       System.out.println(a-c);//结果为-15
       System.out.println(d*b);//有d参与,为long类型,结果为500
       System.out.println(a/(double)b);//结果为小数,所以要把int类型强转double。结果为0.5
       System.out.println(c%a)//c除以a的余数是5,所以结果为5
  }
}

关系运算

在关系运算符中,大于,小于,等于和不等于是用布尔值的false和true来输出结果。

public class Dem3 {
   public static void main(String[] args) {
       //关系运算符的返回结果: 正确,错误 (布尔值)
       int a=10;
       int b=20;
       int c=21;

       System.out.println(a>b);//大于   false
       System.out.println(a<b);//小于     true
       System.out.println(a==b);//是否相等   false
       System.out.println(a!=b);//是否不相等   true
  }
}

自增,自减

++,--,被叫做自增,自减。以自增为例,一个自增相当于加1,当一个变量a,在++a和a++两种表达时,算法的路径会不一样。++a是先计算,再赋值。a++是先赋值,再计算。在一个方法中,++会从上到下积累,在输出句之前出现多少次++,最后的a就会加了多少个1。自减同理

public class Dem4 {
   public static void main(String[] args) {
       //++ -- 自增,自减 一元运算符
       int a = 3;//给a赋初始值
       int b = a++;//先把a的值赋给b后a再+1
       System.out.println(a);//输出a等于4
       int c = ++a;//先+1后再给c赋值,就是4+1,再赋值给c。
       //此时c的值是上面a++得到的值4,再以4的值以++a计算后得到5
       System.out.println(a++);//得到值为5
       System.out.println(a);//得到值为6,
       System.out.println(b);//得到值为3
       System.out.println(c);//得到值为5
       //幂运算的写法
       double pow=Math.pow(3,2);
       System.out.println(pow);//得出结果9.0
  }
}

逻辑运算

&& || !称为与,或,非。以布尔值进行运算。 与 是代表A与B,或 是代表A或者B,非代表取反,正为负,负为正。

与在计算时,需要A与B都为真,结果才为真。如在第一个变量就检测出为假,则不作后面的运算,直接为假

或在计算时,A或者B有一个为真,则结果为真。如在第一个变量检测出为真,则不作后面的运算,直接为真

非在计算时,如计算结果为真,则输出为假。结果为假,则输出为真。

短路运算

求证 “与”“或”在运算时,检测到第一个变量为假,或者真时,就不会再对后面的变量进行运算

public class Dem5 {
   public static void main(String[] args) {
       //逻辑与运算   与 或 非
       boolean a = true;
       boolean b =false;

       System.out.println("a && b:"+(a&&b));//与:两个变量都为真,结果才为true
       System.out.println("a || b:"+(a||b));//或:其中一个变量为真,结果就为true
       System.out.println("!(a&&b):"+!(a&&b));//如结果为真,则变为假。为假则变为真

       //短路运算:
       int c = 5;
       boolean d =(c<4)&&(c++<4);
       //运算:c小于4为错误,在&&之前就被系统检测到false,所以不执行后面的c++变量
       System.out.println(d);//结果为false
       System.out.println(c);//结果为5 则证明在&&之前就短路了
  }
}

位运算

& 与 | 或 ^亦或 ~取反 <<左移 >>右移 用于二进制逻辑运算

A = 0011 0110

B = 1010 0100

A&B =010 0100(两个都为1,结果才为1)

A|B = 1011 0110(有一个为1,结果就为1)

A^B = 1001 0010(相同则为0,不同则为1)

~B = 0101 1011(和原本的数字相反)

左移和右移<< >>

0000 0000 0

0000 0001 1

0000 0010 2

0000 0011 3

0000 0100 4

0000 0101 5

0000 0110 6

0000 0111 7

0000 1000 8

0000 1001 9

.......

0001 0000 16

由此可以看出,左移<<相当于*2,右移>>相当于/2

public class Dem6 {
   public static void main(String[] args) {
       System.out.println(2<<3);//输出结果为16
       System.out.println(16>>3);//输出结果为2
  }
}

扩展赋值运算符

+=,-=,*=,/= +=是求和,如 a+=b,就是代表a=a+b。但求出的数值会累积叠加,这里和自增自减相同,在一个方法里面,输出语句之上的变量都会叠加。另外三个运算符也是同理。

public class Dem7 {
   public static void main(String[] args) {
       int a = 10;//给a赋初始值
       int b = 20;//给B赋初始值
       a+=b;
       System.out.println(a);//结果为30 a的10+b的20
       b+=a;
       System.out.println(b);//结果为50   b的20+a的30
       a*=b;
       System.out.println(a);//结果为1500 a的30*b的50
        System.out.println(""+a+b);//输出结果为150050
//在该运算符两侧,只要有前面出现了String类型,就会把其它类型都转换为String类型再进行连接,所以得出结果为1020
  }
}

三元运算符

? : 为三元运算符

举例 a ? b : c

如果a为真,结果就为b,如果为假,则结果为c

package operator;
//三元运算符
public class Dem8 {
   public static void main(String[] args) {
       int score = 59;
       String t = score<60?"不及格":"及格";
       System.out.println(t);//score<60 为真,结果为"不及格"
  }
}

 

posted on 2020-09-20 22:42  晋歪歪  阅读(1897)  评论(0编辑  收藏  举报