基本运算符
算数运算符:+、-、、/、%(取余)、++(自增)、––(自减)
赋值运算符:=
关系运算符:<、>、>=、<=、==(等于)、!=(不等于)、instanceof
逻辑运算符:&&(与)、||(或)、!(非)
位运算符:&、|、^、~、<<、>>、>>>(了解)
条件运算符:?:
扩展赋值运算符:+=、-=、=、/=
- 算术运算符
package operation;
public class demo01 {
public static void main(String[] args) {
//二元运算符
//ctrl+D 复制当前行到下一行
int a = 10;
int b = 20;
int c = 32;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);//强制转换为浮点数,避免结果取整
}
}
拓展:不同类型相加
package operation;
public class demo02 {
public static void main(String[] args) {
long a= 123441241L;
int b =123;
short c= 10;
byte d =8;
System.out.println(a+b+c+d);//输出为Long类型,其中有一个为long,结果为long
System.out.println(b+c+d);//输出为Int类型,如果没有long,结果都为int
System.out.println(c+d);//输出为Int类型 cast转换
//如果有一个类型是double,则结果为double
}
}
- 关系运算符
package operation;
public class demo03 {
public static void main(String[] args) {
//关系运算符返回的结果为:正确或者错误 布尔值
//关系运算符经常与if使用
int a = 10;
int b = 20;
int c = 21;
//取余,模运算
System.out.println(c%a);//c/a 21/10 =2...1 输出结果为1
System.out.println(a>b);//false
System.out.println(a<b);//ture
System.out.println(a==b);//false
System.out.println(a!=b);//ture
}
}
- 自增、自减 运算符
package operation;
public class demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增
//a++ 等于a=a+1
int c = ++a;//执行完这行代码前,先自增,再给c赋值
//++a 等于a=a+1
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//幂运算 2^3 2*2*2=8 很多运算,我们使用一些工具类来操作!
//Math类数学运算
double pow = Math.pow(2, 3);//输入Math.pow(2,3);按alt+回车返回值
System.out.println(pow);//输出8
}
}
- 逻辑运算符:与、或、非
package operation;
//逻辑运算符
public class demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//与运算:两个变量都为真,结果为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
//c<4为假,则直接输出d为假,后面c++不执行,如果执行则输出的c为6
}
}
- 位运算
package operation;
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
~B =1111 0010
2*8怎么运算最快? 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
*/
System.out.println(2<<3);//输出结果为16
}
}
- 扩展赋值运算符
赋值运算符:+=、-= ,以及关于字符串连接符的面试题。
package operation;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a = a+b 30
a-=b;//a = a-b
System.out.println(a);
//字符串连接符 + ,在+两侧只要一侧出现了String类型,如“”就会把另外一侧都转换为String连接
System.out.println(a+b);//输出30
System.out.println(""+a+b);//输出1020
System.out.println(a+b+"");//输出为30,字符串在前面直接拼接,字符串在后面先运算再拼接
}
}
- 条件运算符(必须掌握)
package operation;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x=true,则结果为y,否则结果为z
int score =80;
String type = score < 60 ? "不及格":"及格";//必须掌握!!!
System.out.println(type);
}
}
运算符优先级问题。