Java基础知识之运算符
算术运算符
+- * /%
public class TestDemo1{ public static void main(String[] args){ System.out.println(5/2); System.out.println((double)(5/2)); System.out.println(5.0/2); System.out.println((double)5/2); } } //运行结果是: //2 //2.0(java的小数不会后面保留很多位) //2.5 //2.5
public static void main(String[] args) { int a = 10; int b = 0; System.out.println(a/b); System.out.println("thank"); }
程序直接报错 (抛出),并且在除0的位置代码直接就结束了
Exception in thread "main" java.lang.ArithmeticException: / by zero
at test.main(test.java:5) //算术异常 出现在第五行
所以除数绝对不能是0
%表示取余数,或者取模
%既可以对int,也可以对小数进行运算
public class TestDemo1{ 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); System.out.println(11.5%2.0); } } //运行结果为: //1 //-1 //1 //-1 //1.5(取模数都输小数)
复合运算符
+= -= *= /= %=
自增运算符
++ --
public class TestDemo1{ public static void main(String[] args){ int a = 10; int b = ++a;//b=11,a=11 System.out.println(b); int c = a++;//c=11,a=12 System.out.println(c); } }
关系运算符
== != < > <= >=
关系运算符的运算结果只会是 true false (boolean类型)
public class TestDemo1{ public static void main(String[] args){ 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
逻辑运算符
&& || !
逻辑运算符的运算结果也只会是 true false (boolean类型)
逻辑与&&
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false.
逻辑或 ||
规则: 两个操作数都为 false, 结果为 false, 否则结果为 true
逻辑非 !(只能作用于boolean类型的数据上)
规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true
&& 与 || 遵守短路求值原则
System.out.println(10 > 20 && 10 / 0 == 0); // 一旦左边为假,右边就不会被执行了,直接打印 false System.out.println(10 < 20 || 10 / 0 == 0); // 一旦左边为真,右边就不会被执行了,直接打印 true
&按位与
|按位或
^按位异或
以上3个都是对二进制进行操作的
&:都是1才为1
|:有1就是1
^:异为1,同为0
~:按位取反
移位运算
、>>右移
在不考虑负数的情况下,右移相当于除法(左边补符号位)
左移<<相当于乘法
,>>>无符号右移(不管原本是正数还是负数,直接在左边补0就行了)
三目运算符
a?b:c
(a>b)?a:b; //取出a b 中的大值