基本运算符
Java支持如下格式的运算符 优先级: 一般使用括号,表示得更清楚
- 算术运算符: +(加)、—(减)、*(乘)、/(除)、%(口语余数,属于模运算)、++、——;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//ctrl + d :复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b); //输出结果为0,显然是错误的,因为int类型取整,所以导致结果为0.故强转类型,可正确显示结果
System.out.println(a/(double)b); //输出结果为0.5,符合预期
}
}
public class Demo04 {
public static void main(String[] args) {
// ++ -- 自增 自减 也称为一元运算符
int a = 3;
int b = a++;
int c = ++a;
System.out.println(a); //输出结果为5
System.out.println(b); //输出解雇为3
System.out.println(c); //输出结果为5
/*
分析:
int b = a++; ++在后可理解为先赋值,再计算;具体过程为;先将a赋值给b,然后再运行a=a+1;所以此时b的输出结果为3,a的结果为4
int c = ++a; ++在前面可理解为先计算,再赋值;具体过程为:先运行a=a+1.然后再将计算之后的a赋值给c,所以此时c的输出结果为5,a的输出结果为5
记忆口诀为:谁在前,先运行谁
*/
//=============================================================
//幂运算 2^3=8 怎么计算? Java中没有^这个符号,需要借助一些工具类 Math类
double pow = Math.pow(2, 3);
System.out.println(pow);
}
}
-
赋值运算符:
-
关系运算符:>、<、>=、<=、==、!=(不等于)、instantceof;
public class Demo03 {
public static void main(String[] args) {
//关系运算符的返回结果;正确 错误 布尔值
//配合if 使用
int a = 10;
int b = 20;
int c = 21;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(c%a); //模运算(取余数) 21/10=2.....1;因此结果输出为1
}
}
- 逻辑运算符:&&、||,!();
//逻辑运算符
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)); //如果是在真则输出假,如果是假则输出真
System.out.println("=========================================");
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<7);
System.out.println(c); //输出结果为5,分析:判断C<4为假,则不再进行下一步c++<7的运算;
System.out.println(d); //输出结果为false
System.out.println("===============================================");
//&&第一个运算为真的情况
int e = 6;
boolean f = (e<7)&&(e++<10);
System.out.println(e); //输出结果为7;分析:判断e<7,为true,则进行下一步e++运算;
System.out.println(f); //输出结果为false
System.out.println("===============================================");
int g = 4;
boolean h = (g<5) || (g++<6);
System.out.println(g); //输出结果为4 分析:判断g<5为true,则不进行g++运算
System.out.println(h); //输出结果为true
System.out.println("===============================================");
int g1 = 4;
boolean h1 = (g1<3) || (g1++<6);
System.out.println(g1); //输出结果为5;分析:判断g1<3为false,进行g1++运算
System.out.println(h1); //输出结果为true
}
}
- 位运算符:& | ^ ~ >>(左移) <<(右移) >>>
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
-----------------------------------
A&B 上下比对00得0,10得0,11得1 结果为:0000 1100
A|B 上下比对都是0则为0,否则为1 结果为:0011 1101
A^B 上下比对相同则为0,不同为1 结果为:0011 0001
~B 取反 结果为:1111 0010
<<左移 相当于把数字乘以2;
>>右移 相当于把数字除以2;
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); //输出结果为 16
System.out.println(3<<1); //输出解雇为6 乘以1次2
System.out.println(3<<2); //输出结果为12,乘以2次2
System.out.println(3<<3); //输出结果为24
System.out.println(3<<4); //输出结果为48
//怎样计算2^8最快
System.out.println(2<<7); //乘以7次2
}
}
- 条件运算符(三元运算符): ? :
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x为true,则结果为y;反之为z
int score = 60;
String type = score < 60 ? "不及格" : "及格"; //必须掌握
// if
System.out.println(type); //输出结果:及格
}
}
-
扩展赋值运算符:+=; -=; *=; /=;
public class Demo07 { public static void main(String[] args) { int a = 10; int b = 20; a+=b; //a = a+b; a-=b; //a = a-b; System.out.println(a); System.out.println(b); //字符串连接符 + ,String System.out.println(""+a+b); //输出结果为1020,分析:如果字符串在前,+会对其进行拼接; System.out.println(a+b+""); //输出结果为30,分析:如果字符串在后,会先进行a+b运算,再进行拼接; System.out.println(a+b+"=="); //输出结果为30==,分析:先进行a+b,再拼接=; } }