(第21讲)运算符问题

前几天做了几道题,突然发现运算符的使用对象,我好想还没有很明白,今天看了一下,整理一下。如下:

运算符大致分为:

1、()、[ ]

2、算术运算符

      a)单目:+(取正)、-(取负)、 ++(自增)、  - -(自减)

      b)双目: +、-、*、/、%

 3、关系运算符:

4、逻辑运算符:

5、位运算符:

7、条件运算符

8、赋值运算符

9、字符串连接运算符

10、instanceof运算符

11、new

具体说明:

1、():适用于java的所有数据类型     [ ]:适用于数组

2、算术运算符

      a)单目:+(取正)、-(取负)、 ++(自增)、  - -(自减)

      b)双目: +、-、*、/、%(值得注意的是对于整形来说2/0会报错,但对于浮点型来说不会,因为他里边有无穷这个概念)

适用于除了布尔类型的其他基本数据类型(byte.   short    int  long  float   double  char)

          char c1 = 'a';
          char c2 = 'g';
          System.out.println(c1+c2);
          System.out.println(c1-c2);
          System.out.println(c1*c2);
          System.out.println(c1/c2);
          System.out.println(c1%c2);

结果是:

200
-6
9991
0
97

         double d1 = Double.POSITIVE_INFINITY;
          double d2 = Double.NEGATIVE_INFINITY;
          float f1 = Float.POSITIVE_INFINITY;
          float f2 = Float.NEGATIVE_INFINITY;
          System.out.println(d1+d2);
          System.out.println(d1-d2);
          System.out.println(d1*d2);
          System.out.println(d1/d2);
          System.out.println(d1%d2);

答案是:

NaN
Infinity
-Infinity
NaN
NaN
NaN
Infinity
-Infinity
NaN

          int i1 = 1;
          int i2 = 1;
          System.out.println((i1++));
          System.out.println((++i2));
          short s1 = 2;
          short s2 = 2;
          System.out.println((s1++));
          System.out.println((++s2));
          byte bb1 = 3;
          byte bb2 = 3;
          System.out.println((bb1++));
          System.out.println((++bb2));
          char cc1 = 'a';
          char cc2 = 'a';
          System.out.println((cc1++));
          System.out.println((++cc2));
          boolean bb11 = true;
          boolean bb21 = true;
          /*System.out.println((bb11++));
          System.out.println((++bb21));*///报错,因为算数运算符不适用与布尔型

结果是:

1
2
2
3
3
4
a
b

 3、关系运算符:

>  :  适用于除了布尔类型的其他基本数据类型(byte.   short    int  long  float   double  char)。不能比较对象之间的关系

>=  适用于除了布尔类型的其他基本数据类型(byte.   short    int  long  float   double  char)。不能比较对象之间的关系

<   适用于除了布尔类型的其他基本数据类型(byte.   short    int  long  float   double  char)。不能比较对象之间的关系

<=   适用于除了布尔类型的其他基本数据类型(byte.   short    int  long  float   double  char)。不能比较对象之间的关系

==  适用于所有基本数据类型(boolean   byte.   short    int  long  float   double  char)。能比较对象之间的关系

!= 适用于所有基本数据类型(booleanbyte.   short    int  long  float   double  char)。能比较对象之间的关系

4、逻辑运算符:又称为布尔运算符,顾名思义,就是针对布尔型的运算

&  逻辑与

|  逻辑或

^  逻辑异或

!  逻辑非

&&  条件与

||  条件或

其中&&  (条件与)  、||  (条件或)   与   &  (逻辑与)、 | ( 逻辑或)功能一样,只是条件与  和 条件或 在左边的操作数能决定整个表达式真假的时候

就不计算表达式右边的值了,因此又称为短路运算符。

5、位运算符: 全部按照补码计算

只作用在整型和字符型(byte   short  int    long   char)、其中Char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;

&  (按位与)

|(按位或)

^ (按位异或)

~  (取反)

<<  (左移。右边补0)

>>  (右移,左边补最高位,即符号位)

>>> (右移,左边补0)

7、条件运算符,也叫  ?:运算符

布尔表达式 ? 表达式1 : 表达式2 

8、赋值运算符

=

9、字符串连接运算符

+

10、instanceof运算符 :用来计算一个引用所引用的对象是否是特定的类或接口的实例、左边是一个对象的引用,右边是一个类或接口的名字。

boolean res = a instanceof A;

11、new运算符:一元前缀运算符,用来创建对象


运算符的优先级问题:(从高到低)

分隔符[ ]   ()  .  ;    ,左结合(从左到右) 
一元运算符+(正号) -(负) ++   - -   ~(按位取反)      !(逻辑非)右结合单目
乘除取余*  /     %左结合双目
加减+   -左结合双目
左移  右移<<     >>    >>>左结合双目
关系<              <=        >      >=    instanceof左结合双目
等价关系==      !=左结合双目
按位与&左结合双目
按位或|左结合双目
按位异或^左结合双目
条件与(短路与)&&左结合双目
条件或(短路或)   ||左结合双目
条件运算符  ? :右结合三目
或者赋值运算符+=      -=   *=     /=   %=   >>=   <<=    >>>=  &=    |=   ^=   =右结合双目


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值