运算符
- 算术运算符: +,-,*,/,%,++,--
- 赋值运算符 =
- 关系运算符: >,<,>=,<=,==,!= instanceof
- 逻辑运算符: &&,||,!
- 位运算符: &,|,^,~ , >>,<<,>>>
- 条件运算符 ?:
- 扩展赋值运算符:+=,-=,*=,/=
整数运算
如果两个操作数有一个为Long, 则结果也为long
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
public static void main(String[] args) {
long a = 1231321311231231L;
int b = 1213;
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类型
}
浮点数运算
如果两个操作数有一个为double, 则结果为double.
只有两个操作数都是float, 则结果才为float.
public static void main(String[] args) {
float a = 3.14565F;
double b = 3.194546464;
float c = 1.3123123F;
System.out.println(a+b); //double类型
System.out.println(b+c); //double类型
System.out.println(a+c); //float类型
}
关系运算符
返回布尔值
取模(余)运算
其操作数可以为浮点数,一般使用整数。如:5.9%3.9=2.000000004
负数%负数=负数;
负数%正数=负数;
正数%负数=正数;
public static void main(String[] args) {
System.out.println(9 % 4); //1
System.out.println(-9 % -4); //-1
System.out.println(-10 % 4); //-2
System.out.println(9 % -4); //1
}
一元运算符
自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,
而自增自减运算符是一个操作数,分为前缀和后缀两种。
public class Hello {
public static void main(String[] args) {
int a = 3;
//数值上a++ ++a =a+1
int b = a++; //执行完后,b=3。先给b赋值,再自增。
System.out.println(b);
System.out.println(a);//此时a已经等于4
int c = ++a; //执行完后,c=5。先自增,再给c赋值
System.out.println(c);
System.out.println(a);
}
}
幂运算
public static void main(String[] args) {
int a = 3^2; //java中不能这么处理, ^是异或符号。
double b = Math.pow(3, 2);
}
//Math类提供了很多科学和工程计算需要的方法和常数。特殊的运算都需要运用到方法!
逻辑运算符
逻辑与:&&,逻辑或:||,逻辑非:!
public static void main(String[] args) {
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));
}
其实&才是逻辑与,&&是短路与;区别是&&当遇到false就会停下。|才是逻辑或,||是短路或;区别是||当遇到true就会停下。
public static void main(String[] args) {
int num1 = 1;
int num2 = 1;
boolean b = false;
boolean c = b & ++num1 > 1;
boolean d = b && ++num2 > 1;
System.out.println("c is " + c + " num1=" + num1);//c is false num1=2
System.out.println("d is " + d + " num2=" + num2);//d is false num2=1
}
public static void main(String[] args) {
int num1 = 1;
int num2 = 1;
boolean b = true;
boolean c = b | ++num1 > 1;
boolean d = b || ++num2 > 1;
System.out.println("c is " + c + " num1=" + num1);//c is true num1=2
System.out.println("d is " + d + " num2=" + num2);//d is true num2=1
}
位运算符
左移一位相当于乘2,右移一位相当于除2取商。
2<<3
2的二进制是10 在32位存储器里面是0000 0000 0000 0010
左移三位后变成 0000 0000 0001 0000 也就是16
扩展运算符
字符串连接符
“+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串
然后再进行连接。
public class Hello {
public static void main(String[] args) {
int c = 13;
int d = 14;
System.out.println("c+d=" + c + d);
System.out.println(c + d + "c+d=");
}
}
三目条件运算符
x ? y : z
其中x为boolean类型表达式,如果x的值为true,则结果为表达式y的值,否则=结果为表达式z的值。
public class Hello {
public static void main(String[] args) {
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println("type= " + type);
}
// 结果为:type= 及格
}