运算符
- Java语言支持如下运算符:
- 算术运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符: >, <, >=, <=, ==, !=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&, | , ^,~,>>,<<,>>>(了解!!!)
- 条件运算符: ?,:
- 扩展赋值运算符:+=,-=,*=,/=
主要为前四个,后两个偷懒用,位运算符与位有关,了解就行
二元运算符 +,-,*,/
注意:
int a =10;
int b =20;
System.out.println(a/b); //0
这里会输出0,因为结果是int型的,把0.5省掉了
这时我们需要将其中一个转化成double型才能得出正确结果.
System.out.println(a/(double)b); //0.5
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); //这里我们将b转换为double
System.out.println(a/b); //0 因为是int型的,省掉了 System.out.println(a/(double)b); //0.5 正确
}
}
数据运算时出现的几种情况
- 运算时,会先转换为当前值中最高的类型来计算
- 整数计算下:计算有Long参与数值类型变为Long.那么有double时,结果一定为double
- 特殊类型转换:byte、short、char用运算符运算后自动转型为int类型
证明:(详细看下方代码)
short c =10;
byte d =8;
char g ='a';
System.out.println((String)(c+d+g)); cannot cast 'int' to 'java.lang.String' 不能把int型转换为String
public class Demo02 {
public static void main(String[] args) {
long a = 1321231321321L;
int b = 123;
short c =10;
byte d =8;
float e =10.0f;
double f =50.0;
char g ='a';
System.out.println(c+d+g);//类型转换:byte、short、char用运算符运算后自动转型为int类型
System.out.println(e+f);//double
System.out.println(a+b+c+d+e);//float 运算时,会先转换为当前值中最高的类型来计算
System.out.println(a+b+c+d+e+f);//double
System.out.println(a+b+c+d);//Long 整数计算下:计算有Long参与数值类型变为Long,那么有double时,结果一定为double
System.out.println(b+c+d);//Int
System.out.println(c+d);//Int
//System.out.println((String)(c+d)); cannot cast 'int' to 'java.lang.String' 不能把int型转换为String
}
}
关系运算符 >,<,==,!=,%(取余)
关系运算符返回的结果: 正确,错误
取余:也叫模运算
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果: 正确,错误 布尔值
//if
int a = 10;
int b = 20;
int c = 21;
//取余:也叫模运算
System.out.println(c%a);// 结果为 1 相当于 c / a 21 / 10 = 2 .... 1
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
}
}