一、赋值运算符
赋值运算符(=)的作用就是将一个表达式的值赋值给左边,左边必须是可修改的(变量),不能是常量。
public class MyClass {
public static void main(String[] args) {
int num = 0;//尽可能早地初始化变量,声明变量时就赋初值
int num1 = 99;
num=num1;//将num1的值赋值给num
System.out.println(num);//输出99
}
}
二、算数运算符
Java中算数运算符包括
- 加法运算:+
- 减法运算:-
- 乘法运算:*
- 除法运算:/(分母不能为0)
- 取模运算:%
public class MyClass {
public static void main(String[] args) {
int num1=5;
int num2=3;
//加法运算
System.out.println(num1+num2);//输出8
//减法运算
System.out.println(num1-num2);//输出2
//乘法运算
System.out.println(num1*num2);//输出15
//除法运算
System.out.println(num1/num2);//输出1
//取模运算
System.out.println(num1%num2);//输出2
}
}
2.1 /和%的区别
- /取结果的商,%取结果的余数
- 任何数%10都等于个位数
例:1234%10=4 - 除法中只有一位小数就按照正常除法运算
例:10.0/4=2.5
2.1.1 案例:将一个整数逆序输出
public class PrintText {
public static void main(String[] args) {
int num =54321;
int wan=num%10*10000;//等于10000,num%10=1
int qian=num/10%10*1000;//等于2000,num/10=5432,5432%10=2
int bai=num/100%10*100;//等于300,num/10=543,543%10=3
int shi=num/1000%10*10;//等于40,num/10=54,54%10=4
int ge=num/10000%10;//等于5,num/10=5,5%10=5
System.out.println(wan+qian+bai+shi+ge);//输出12345
}
}
三、复合赋值运算符
Java中复合赋值运算符包括
- 加后赋值:+=
- 减后赋值:-=
- 乘后赋值:*=
- 除后赋值:/=
- 取余后赋值:%=
public class MyClass {
public static void main(String[] args) {
int a = 20;
int b = 10;
a += b;//这里a=20,等价于a = a + b
System.out.println(a);//输出30
a -= b;//这里a=30,等价于a = a - b
System.out.println(a);//输出20
a *= b;//这里a=20,等价于a = a * b
System.out.println(a);//输出200
a /= b;//这里a=200,等价于a = a / b
System.out.println(a);//输出20
a %= b;//这里a=20,等价于a = a % b
System.out.println(a);//输出0
}
}
四、增量运算符
Java中增量赋值运算符包括
- 自增:++
- 自减:- -
++运算,变量的值加1;–运算,变量的值减1;
单独使用时,++和–放在变量前面或者后面,结果是一样的;但是在混合运算中就不同了。
4.1 ++/- -在前,先运算后取值
public class MyClass {
public static void main(String[] args) {
int a = 10;
int b = ++a;//先将a的值加1,然后赋值给b;
System.out.println(a);//输出10
System.out.println(b);//输出10
}
}
4.2 ++/- - 在后,先取值后运算
public class MyClass {
public static void main(String[] args) {
int a = 10;
int b = a--;//先将a的值赋给b,在对a进行减1
System.out.println(a);//输出9
System.out.println(b);//输出10
}
}
4.3 char类型的自增/自减
public class MyClass {
public static void main(String[] args) {
char x = 'a';//在ASCLL码表中a=97,b=98....
char y = x++;//这里自增就相当于将ASCLL码表中a的值加1,为98,所以x的值就为b
System.out.println(x);//输出b
System.out.println(y);//输出a
}
}
注:自增/自减可以用于整数类型、浮点类型和char类型
五、关系运算符
Java中关系运算符包括
- 大于:>
- 小于:<
- 等于:== 不要将=和==混淆
- 大于等于:>=
- 小于等于:<=
- 不等于:!=
注:关系运算符的结果都是boolean值,要么是true,要么是false
public class MyClass {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a > b);//输出false
System.out.println(a < b);//输出true
System.out.println(a >= b);//输出false
System.out.println(a <= b);//输出true
System.out.println(a == b);//输出false
System.out.println(a!= b);//输出true
}
}
六、逻辑运算符
Java中逻辑运算符包括
-
逻辑运算符(用来比较多个条件关系的运算结果,结果为boolean值。)
-
符号 作用 说明 & 逻辑与 a&b,a和b都为true,结果为true,否则为false | 逻辑或 a|b,a和b都为false ,结果为false ,否则为true ^ 逻辑异或 a^b,a和b结果不同为true,相同为false ! 逻辑非 a!b,!a,结果与a相反
-
-
短路逻辑运算符(效率更高,前面的条件不成立就不会执行后面的条件。)
-
符号 作用 说明 && 短路与 作用与&相同,但是有短路作用 || 短路或 作用与|相同,但是有短路作用
-
public class MyClass {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
//a<b为true,b>c为false
System.out.println(a<b&b>c);//输出false
System.out.println(a<b && b>c);//输出false
System.out.println(a<b | b>c);//输出true
System.out.println(a<b || b>c);//输出true
//a>b为false,b>c为false
System.out.println(a>b ^ b>c);//输出false
System.out.println(!(a>b));//输出true
}
}
七、三目运算符
Java中三目运算符语法为
- 关系表达式 ?值1 :值2
- 关系表达式 ?(表达式2) : (表达式3)
含义:先判断关系表达式的值,如果为true,就将表达式2/值1的值作为整个表达式的值,否则,就将表达式3/值2的值作为整个表达式的值。
public class MyClass {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = a > b ? a : b;//输出20;因为a>b为false,所以将b的值作为整个表达式的值。
System.out.println(max);
int num = a > b ? (a - b) : (b - a);//输出10;因为a>b为false,所以将(b-a)的值作为整个表达式的值。
System.out.println(num);
}
}
求最值的思想就是三目运算符,两两相比。
八、instanceof运算符
Java中instanceof运算符语法为
- object instanceof class
- object:要判断的对象实例(是引用数据类型,不能是基本数据类型)
- class:要检查的对象的类或接口
instanceof运算符返回boolean值,如果object是class的实例,则为true,否则为false。
class animal {
}
class dog extends animal {
}
public class MyClass {
public static void main(String[] args) {
animal animal = new animal();
dog dog = new dog();
System.out.println(dog instanceof animal);//输出true
String str = "Hello world";
System.out.println(str instanceof Object);//输出true;因为object是所有类的父类。
System.out.println(str instanceof String);//输出true
}
}
注:object和class必须在同一继承对象树上
public class MyClass {
public static void main(String[] args) {
String str = "Hello world";
///这行代码将不会编译
System.out.println(str instanceof Integer);//会报(不可转换的类型;无法将 'java.lang.String' 转换为 'java.lang.Integer')异常
}
}