运算符、自增、自减、关系运算符、逻辑运算符、位运算、拓展赋值运算、条件运算
运算符
(operator)
-
算数运算符: + - * / %(取余运算(模运算)) ++ --
-
赋值运算符:=
-
关系运算符: > = <= == != instanceof
-
逻辑运算符: && || !
-
位运算符: & | ^ ~ >> <>> (了解!!!)
-
条件运算符?:
-
扩展赋值运算符: += -= *= /=
-
运算符的优先级 () ++/-- 加减乘除 逻辑运算 赋值运算
算数运算符&赋值运算符
普通算数运算
package operator; public class Demo01 { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; int d = 25; int e = 10; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/(double)b); //强制转换成double类型 } }
不同类型的算数运算
package operator; public class Demo02 { public static void main(String[] args) { long a = 1231231232123123L; int b =123; short c =10; byte d = 8; System.out.println(a+b+c+d);//long 类型 System.out.println(b+c+d);// 没有long类型的自动为int类型 System.out.println((double)(c+d)); } }
自增、自减
package operator; public class Demo04 { public static void main(String[] args) { // ++ -- 自增,自减 一元运算符 int a = 3; int b = a++; // a++ a = a + 1 执行这行代码后,先给b赋值,再自增 int c = ++a; // ++a a = a + 1 执行这行代码前,先自增,再给a + 1; System.out.println(a); System.out.println(a); System.out.println(b); System.out.println(b); System.out.println(c); System.out.println(c); //幂运算 2^3 2*2*2 = 8 double pow = Math.pow(2, 3); System.out.println(pow); //很多运算使用工具来做,Math类 数学工具类 } }
关系运算符
关系运算符返回结果:正确(true) 错误(false) 布尔值
经常跟if共同使用
package operator; public class Demo03 { public static void main(String[] args) { //关系运算符返回的结果:正确(true) 错误(false) 布尔值 int a = 10; int b = 20; int c = 21; System.out.println(c%a); // 取余 模运算 System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); }
逻辑运算符
与 或 非
package operator; //逻辑运算符 public class Demo05 { public static void main(String[] args) { //与(and) 或(or) 非(取反) boolean a = true; boolean b = false; System.out.println("a && b:"+(a&&b)); //两个都为真才为真 System.out.println("a || b:"+ (a||b)); //一个为真就为真,两个都为假才为假。 System.out.println("!(a && b):"+!(a && b)); //真假结果取反 //短路运算 int c = 5; boolean d = (c<4)&&(c++<4); //与运算中,如果前一个条件错了,会直接报错,不会继续执行下面的语句 System.out.println(d); System.out.println(c); // 如果 c++ 放到前面,就会正常先执行 c++ boolean e = (c++<4)&&(c<4); System.out.println(e); System.out.println(c); } }
位运算
位运算符 | 运算用法 |
---|---|
&(与) | 只有都为1才输出1 |
|(或) | 只要有1就输出1 |
~(非) | 1、0都取反 |
^(异或) | 相同为1,不同为0 |
<<(左移) | 左移几位,乘几个2 |
>>(右移) | 右移几位,除几个2 |
package operator; public class Demo06 { public static void main(String[] args) { /* A = 0011 1100 B = 0000 1101 ------------------------------------------ A&B 0000 1100 与 A|B 0011 1101 或 A^B 0011 0001 异或(如果相同就为0 ,不相同就为1) ~B 1111 0010 非 2*8 = 16 2*2*2*2 <> 右移 /2 (右移几,除几个2) 效率高,直接跟二进制打交道 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 */ int A = 0b0000_0011; int B = 0b0011_0011; System.out.println(A&B); // 在这里我想输出结果为二进制,没有办法换 System.out.println(3<>2); //3*2*2 0 // 在这里我想输出为字符型,没有办法换 } }
扩展赋值运算
a += b 相当于 a = a + b简写
注意“+”什么时候用作连接符 , String类型在前 “+ ” 用作连接符
package operator; public class Demo07 { public static void main(String[] args) { int a = 10; int b = 20; a += b; //a = a + b a *= b; a /= b; a -= b; System.out.println(a); System.out.println(a/(double)b); //连接符 System.out.println(a+b); System.out.println(""+a+b); //String 类型在前面 , “+”表示连接符 System.out.println(a+b+""); //String 类型在后面 , “+”继续先运算 } }
条件运算符
基本用法:
x ? y : z 如果x==true , 则结果为y , 否则结果为 z
package operator; // 三元运算符 public class Demo08 { public static void main(String[] args) { // x ? y : z // 如果x==true , 则结果为y , 否则结果为 z int score = 50; String type = score < 60 ? "不及格" : "及格"; /* String type; if (score < 60) type = "不及格"; else type = "及格"; */ System.out.println(type); } }