运算符
算术运算符:
- +、-、*、/
- % 取余、模运算
- ++、--
- 赋值运算符:=
关系运算符:
- 大小:>、<、>=、<=
- 等于:==
- 不等于:!=
- instanceof
- 逻辑运算符:&&与、|| 或、!非
二元运算符
加减乘除
- 当要除出小数时,一定要注意作用范围
public class Demo01 {
public static void main(String[] args) {
// 二元运算符
//Ctrl + D : 复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b);//输出0
System.out.println(a/(double)b);//输出0.5
}
}
- 有一个为 long,结果为 long
- 没有 long,都为 int
- 如果有 double 类型,结果一定是 double
public class Demo02 {
public static void main(String[] args) {
long a = 1231635461654L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//有一个为long,结果为long
//没有long,都为int
//如果有double,结果一定是double
}
}
关系运算符
返回的结果:布尔值——false、true
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
//if
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);
}
}
一元运算符
自增 ++ 自减 --
- a++/-- = a +/- 1
- a++/--执行完这行代码后,先赋值,再自增
--/++a 执行完这行代码后,先自增,再赋值
//++ -- ,自增、自减 一元运算符 int a = 3; int b = a++;//执行完这行代码后,先赋值,再自增 //a++ a = a + 1 System.out.println(a);//4 int c = ++a;//执行完这行代码后,先自增,再赋值 //++a a = a + 1 System.out.println(a);//5 System.out.println(b);//3 System.out.println(c);//5
幂运算
借助 Math 工具类
//幂运算2^3 2*2*2 = 8 很多运算,我们会使用一些工具类来操作 double pow = Math.pow(3,2); System.out.println(pow);//9
逻辑运算符
- && 与(and):逻辑与运算:两个变量都为真,结果才为 true
- || 或(or):逻辑或运算:两个变量有一个为真,则结果为 true
! 非(取反):如果是真,则变为假,如果是假则变为真
短路运算(&&和 ||):比如与运算,若一个为假(或真),则不进行下一步运算
//与and 或or 非 boolean a = true; boolean b = false; System.out.println("a && b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为true System.out.println("a || b"+(a||b));//逻辑或运算:两个变量有一个为真,则结果才为true System.out.println("! (a && b) "+!(a&&b));//如果是真,则变为假,如果是假则变为真 //字符+号是连接符 //短路运算 int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d);//false System.out.println(c);//5
位运算
- & 与运算:两个都是 1,则为 1
- | 或运算:有一个为 1,则为 1
- ^ 异或运算:如果相同,则为 0 (二进制不进位加法)
- ~ 取反:
无符号右移
<< 左移 >> 右移
/* 位运算: A = 0011 1100 B = 0000 1101 A&B = 0000 1100//两个都是1,则为1 A|B = 0011 1101//有一个为1,则为1 A^B = 0011 0001//如果相同,则为0 异或=二进制不进位加法 ~B = 1111 0010//取反 <<左移*2 >>右移/2 2*8=16 2*2*2*2 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 */ System.out.println(2<<3); System.out.println(1<<3); System.out.println(3<<1);
拓展赋值运算符
字符串连接符:+
int a = 10; int b = 20; a+=b;//a = a + b a-=b;//a = a - b System.out.println(a); //字符串连接符 +,String System.out.println(a+b);//30 System.out.println(""+a+b);//1020 System.out.println(a+b+"");//30 //优先级
条件运算符
?:——
x ?y:z —— 如果 x==true,则结果为 y,否则为 z
//x ? y : z //如果x==true, 则结果为y, 否则结果为z int score = 80; String type = score < 60 ? "不及格" : "及格"; System.out.println(type);//及格