一、算术运算符
加减乘除取模(+ - * / %)加减乘除,需要注意的是除法。
1、整形除整形等于整形
2、浮点型除浮点型为浮点型
3、浮点型除整形或者整形除浮点型都为浮点型
负数的取余比较特殊,看如下代码:
public class dask {
public static void main(String[] args) {
int a=10;
int b=-2;
int c=2;
System.out.println(a%b);
System.out.println(b%a);
System.out.println(a%c);
}
}
运行结果为:
当一个正数除以一个负数的时候上的商也是负数。当一个负数除以一个正数上的商为非负数。最后的余数就很容易算出来了 。
二、关系运算符
一共有六个分别为:== != < > <= >=
在判断相等时千万千万不要就写一个等于号,一定要写两个等于。
例如下面的代码:
public class dask {
public static void main(String[] args) {
int a=10;
int b=-2;
int c=2;
if(a=2){
System.out.println(a);
}
}
}
编译器会报错,因为括号中的表达式一定要是Boolean类型的。
但在vs编译器不会报错,因为在C语言非零表示真,就会执行if中的语句。
还要注意的点还有, 不能数学搞混淆。
eg:1<a<2,不能将这个写入判断条件中,必须写成这样:a>1&&a<2。
三、逻辑运算符
介绍一个短路求值
public class dask {
public static void main(String[] args) {
int a=10;
int b=-2;
int c=2;
System.out.println(a<c&&a/0==0);
System.out.println(a>c||a/0==0);
}
}
能正常运行,这就说明了这两个操作符是短路求值了。
public class dask {
public static void main(String[] args) {
int a=10;
int b=-2;
int c=2;
System.out.println(a<c&a/0==0);
System.out.println(a>c|a/0==0);
}
}
当两边都是布尔表达式时,&和 |不会遵循短路求值,但两那边不是布尔表达式时,就是按位与按位和或。
2.无符号右移 >>>: 最右侧位不要了, 最左侧补 0。java新增的。
四、条件运算符
只有一个,就是三目操作符。表达式1?表达式2:表达式3
1、表达式2与表达式3要是同一类型,除非发生类型转换
public class dask {
public static void main(String[] args) {
int a=10;
int b=-2;
int c=2;
int s=a>b?1:2.0;//类型不同,会报错
double s=a>b?1:2.0;//就不会报错
}
}
2、表达式必须要被使用(可以理解为赋值)
eg:0;会报错,但是int a=0;就不会报错,一定要赋给一个变量。
public class dask {
public static void main(String[] args) {
int a=10;
int b=-2;
int c=2;
a>b?a:b;
}
}