文章目录
- 运算符
- 一、算术运算符
- 1、除法
- 2、取余
- 3、增量赋值运算符(符合运算符)
- 4、自增自减运算符
- 二、关系运算符
- 三、逻辑运算符
- 1、逻辑与
- 2、逻辑或
- 3、逻辑非
- 四、位运算符
- 1、按位与&
- 3、按位或 |
- 3、按位异或 ^
- 4、按位取反~
- 小结
- 四、移位运算符
- 1.右移>>
- 2.左移 <<
- 3.无符号右移 >>>
- 4. 没有无符号左移,没有意义
- 五、条件运算符
- 六、运算符的优先级
一、算术运算符
基本四则运算符:+ - * / %
1、除法- 代码示例:
public class TestDemo { public static void main(String[] args) { System.out.println(5/2); System.out.println(5.0/2); System.out.println((float)5/2); System.out.println((float)(5/2)); } }
运行结果:(自己的答案:2 2.5 2.5 2.0)
2 2.5 2.5 2.0
- 代码示例:(不能除0)
public class TestDemo { public static void main(String[] args) { System.out.println(5/0); } }
运行结果:(java异常------java.lang.ArithmeticException叫做算术异常)
Exception in thread "main" java.lang.ArithmeticException: / by zero at TestDemo.main(TestDemo.java:9)2、取余
%表示不仅可以对int求模,也能对double求模 注意:
- 10/-3 -10/3等情况 代码示例:
public static void main(String[] args) { System.out.println(10%3); System.out.println(-10%3); System.out.println(10%-3); System.out.println(-10%-3); }
运行结果:(自己的答案:1 -1 -1 1)
1 -1 1 -1
第三个错误原因:10除以-3商-3 余数是1 ; 第四个错误原因: -10除以-3商3(和是一个正数)余数是-1。
- 小数可以求余数
有 += -= *= /= %=
例如:a+ = 10 ------------a = a+10;
4、自增自减运算符有 ++ –
代码示例:
int a = 10; int b = ++a;//a先加在赋值给b a=11 System.out.println(b); int c = a++;//先c = a a=11 ; 在a++ a=12 System.out.println(c);//c=11
运行结果:
11 11二、关系运算符
主要有六个: ==(判断相等) !=(不等于) > < <= >=
关系运算符的表达式返回值都是boolean类型
代码示例:
int a = 10; int b = 20; System.out.println(a == b); System.out.println(a != b); System.out.println(a < b); System.out.println(a > b); System.out.println(a <= b); System.out.println(a >= b);
运行结果:
false true true false true false三、逻辑运算符
主要有三个 : &&(且) || (或) !(非)
表达式返回值都是boolean类型
1、逻辑与-
表达式1 && 表达式2 (都为真表达式才成立)
-
一旦表达式1为假,那么表达式2就不会执行了(短路求值)
例如: System.out.println(10 > 20 && 10/0 == 0);
运行结果:
false (10/0会报错,为什么没有报错?-------10>20为假,后面的表达式2没有被执行)
-
表达式1 || 表达式2 (其中一个真 就为真)
-
一旦表达式1为真,那么就没有必要执行表达式2了 (短路或)
-
!表达式1
int a = 10; int b = 20; System.out.println(!a < b);
运行结果:
错误: 一元运算符 '!' 的 *** 作数类型int错误 System.out.println(!a < b);//改正:System.out.println(!(a < b));
原因:在Java中 非只能运行于布尔类型数据上,举例:
boolean flg = true; System.out.println(!flg);
运行结果:false
- 有 0 就是 0
0000 1011 0010 0010 & ----------- 0000 00103、按位或 |
- 有 1 就是 1
0000 0110 0010 0011 | -------------- 0010 01113、按位异或 ^
- 一样为 0 ,不同为 1。 异:不一样的
- 常用:0 ^ n = n; n ^ n = 0;
0000 1011 0010 0110 ^ ----------- 0010 11014、按位取反~
- 0 --》1 ,1–》0
-
如果 *** 作数为布尔类型时,也表示逻辑运算。但是他们和&& || 相比,不支持短路求值;
例如:
System.out.println(10 > 20 & 10/0 == 0);
运行结果:程序异常
有三个:<< >> >>>
都是按照二进制位来运算的
举例:11的二进制0000 1011
1.右移>>-
11>>1 11右移1位(右移以后,最高位(前面的)为几就补几 0000 0101 -----5
右移相当于是除法 11/(2^1)=5 移2位就是 11/(2^2)=2
-1>>1 1111 1111 右移一个 1111 1111(它本身)
位运算的速度是大于 乘法 除法的,
-
11<<1 11左移1位(左移只补0 0001 0110 ------22)
11<<2 0010 1100 -----44
左移相当于乘法
- -1 ----1111 1111 >>>1 0111 1111(只补0)
表达式1 ?表达式2 : 表达式3(三目运算符 是条件判断语句的简化写法)
当表达式1的值为true时,整个表达式的值为 表达式2, 表达式1为false,整个表达式的值为表达式3
六、运算符的优先级乘除一定比加减高, 剩下的加括号
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)