(第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运算符:一元前缀运算符,用来创建对象
运算符的优先级问题:(从高到低)
运算符大致分为:
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 | 左结合 | 双目 |
等价关系 | == != | 左结合 | 双目 |
按位与 | & | 左结合 | 双目 |
按位或 | | | 左结合 | 双目 |
按位异或 | ^ | 左结合 | 双目 |
条件与(短路与) | && | 左结合 | 双目 |
条件或(短路或) | || | 左结合 | 双目 |
条件运算符 | ? : | 右结合 | 三目 |
或者赋值运算符 | += -= *= /= %= >>= <<= >>>= &= |= ^= = | 右结合 | 双目 |
相关文章推荐
- Service com.android.exchange.ExchangeService has leaked ServiceConnection
- 批处理修改所有文件夹下文件后缀名
- Eclipse在线安装SVN
- eclipse插件开发资料总结
- rsyslog安装
- 构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(62)-EF链接串加密
- 部分手机不能连PC adb
- 解决maven项目pom报错
- Android中Activity生命周期的深度剖析
- DTW标准模板采集程序XML
- unix之内存管理
- 第十六周实践项目之阅读程序————9
- IP寻址故障排除
- 简单方便的代码混淆(Android)
- 简单的动态规划问题总览(图)
- spring集成quartz实现的定时更新cache的代码配置
- bootstrap 弹出包含iframe模态窗口的修改
- java 反射和注解的简单应用
- 使用(x&y) + ((x^y)>>1) 求平均数
- android mainfest