您的位置:首页 > 其它

(第21讲)运算符问题

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

运算符大致分为:

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左结合双目
等价关系==      !=左结合双目
按位与&左结合双目
按位或|左结合双目
按位异或^左结合双目
条件与(短路与)&&左结合双目
条件或(短路或)   ||左结合双目
条件运算符  ? :右结合三目
或者赋值运算符+=      -=   *=     /=   %=   >>=   <<=    >>>=  &=    |=   ^=   =右结合双目
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: