Java中的运算符
- 算数运算符: +,-,*,/,%,++,--
- 赋值运算符: =
- 关系运算符: >,<,>=,<=,==,!=,instanceof
- 逻辑运算符: &&,||,!
- 位运算符: &,|,^,~,>>,<<,>>>
- 条件运算符(三目运算符): ?
- 扩展赋值运算符: +=,-=,*=,/=
案例
基本运算符
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a + b);//30
System.out.println(a - b);//-10
System.out.println(a * b);//200
System.out.println(a / b);//0
System.out.println(a / (double)b);//0.5
}
}
==运算时结果会自动转换为最大的类型,例如long,double,否则默认为int类型==
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 12545454512545L;
int b = 1022522;
short c = 1313;
byte d = 10;
System.out.println(a + b + c + d);//long型,12545455536390
System.out.println(b + c + d);//int型,1023845
System.out.println(c + d);//int型,1323
//运算时结果会自动转换为最大的类型,例如long,double,否则默认为int类型
System.out.println((double) (c + d));//1323.0
}
}
自增(减)运算符 ++,--
- ==a++(--) 相当于先将a的值用于运算,再将a进行自增(减)==
- ==++(--)a 相当于先将a的值自增(减),再将a的值用于运算==
package operator;
public class Demo03 {
public static void main(String[] args) {
//++ -- 自增、自减 一元运算符
int a = 3;
int b = a++;//执行完这段代码后,先给b赋值,a再自增
//a = a + 1;
System.out.println(a);
System.out.println(b);
//a = a + 1;
int c = ++a;//执行这段代码之前,a先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
逻辑运算符
- 逻辑与(and)运算: && 两个变量都为真,结果才为true 该运算是短路的,即:当发现第一个变量或表达式为假时,不执行第二个表达式,直接返回false
- 逻辑或(or)运算:|| 两个变量有一个为真,则结果才为true,换言之两个变量都为假,结果才为false 该运算是短路的,即:当发现第一个变量或表达式为真时,不执行第二个表达式,直接返回true
- 逻辑非运算: ! 如果为真,则变为假,如果为假,则变为真
package operator;
//逻辑运算符
public class Demo04 {
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,换言之两个变量都为假,结果才为false
System.out.println("a && b:" + !(a && b));//非运算:如果为真,则变为假,如果为假,则变为真
//短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 10);
System.out.println(d);
System.out.println(c);
}
}
位运算符
- 位与: & 对位都为1,则结果为1,否则结果为0
- 位或: | 对位中有一个为1,则结果为1,否则结果为0
- 异或: ^ 对位相同,则为0,否则结果为1
- 非: ~ 取反操作,1变为0,0变为1
package operator;
//位运算符
public class Demo05 {
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 = 16
<< *2
>> /2
*/
System.out.println(2 << 3);
}
}
扩展赋值运算符
- += a+=b --------> a = a + b
- -= a-=b --------> a = a - b
- *= a*=b --------> a = a * b
- /= a/=b --------> a = a / b
package operator;
//扩展赋值运算符
public class Demo06 {
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);//10
}
}
字符串连接符 +
- ==当字符串位于数字变量之前时,所有变量做字符串拼接==
- ==当字符串位于数字变量之后时,先做变量的运算操作,再进行字符串的拼接==
package operator;
//字符串连接符
public class Demo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//字符串连接符 +
System.out.println("a" + a + b);//a1020
System.out.println(a + b + "");//30a
}
}
三元运算符
==表达式 ?值1 : 值2
如果表达式为true,则结果为值1,否则,结果为值2==
package operator;
//三元运算符
public class Demo07 {
public static void main(String[] args) {
// x ? y : z
//如果x == true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);//及格
}
}