算术运算符
加减乘除取余
±*/%
实例:键盘录入一个三位数。将其拆分为百位个位和十位,打印在控制台上
import java.util.Scanner;
class CESHI{
public static void main(String[]atgs){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个三位数");
int num = sc.nextInt();
int ge=num%10;
int shi=num/10%10;
int bai=num/100;
System.out.println("个位为"+ge+";"+"十位为"+shi+";"+"百位为"+bai+";");
}
}
自增自减运算符
参与赋值等运算时,++变量前,先对变量做自增运算,然后再拿变量参与操作;
++变量在后,先对变量进行操作,然后再对变量做自增运算;
自减和自增逻辑相同;
例如:
int a =1;
int b=++a;//运行后b的值为2,a的值为2;这里先对a进行自增运算:a=a+1;,然后再将a的值赋值给b;
int a =1;
int b =a++;//运行后b的值为1,a的值为2;这里先将a的值赋值给b,然后对a进行自增运算;
int a =1;
Stytem.out.println(a++);//运行结果为1;
Stytem.out.println(a);//运行结果为2;
int a =1;
Stytem.out.println(++a);//运行结果为2;
赋值运算符
=、+=、-=、/=、*=、%=
+=:将符号左右两边的数据做加法运算,结果赋值给左边;特殊赋值运算符自带强转;
例如:
int a =10;
a+=a;//运行后a的值为20,等效于a=a+a;
short s=1;
s=s+1;
//此时编译会报错
//因为short、byte和char三种类型的变量在运算时会自动提升为int型,int型变量和int型整数相加还是int型
//int型数据表示范围比short类型的数据要大,无法直接赋值
//非要赋值需要将值转化为short才能进行转化,即:s=(short)(s+1)
//但如果使用+=的话,会自带强制转化,如:s+=1等效于,s=(short)(s=s+1)
关系运算符(比较运算符)
(>)(>=)(<)(<=)(==)(!=),比较结果只有true和false
逻辑运算符
&(并且、与)、|(或、或者)、!(非,取反)、^(异或,相同为false,不同为true)
案例:
System.out.println(!true);//打印结果为false
System.out.println(!!true);//打印结果true
System.out.println(true^false);//打印结果为true
System.out.println(true^true);//打印结果为false
System.out.println(false^false);//打印结果为false
短路运算符
&& 、||
&&:具有短路效果,当左边为false时,右边就不执行了
||;如果左边为真时,右边不执行,因为或,左边为真的时候已经可以输出true了,后边为真为假对本行结果都没有影响
例如:
int a=4;
System.out.println(a++>5&&a<10);//左边++在a右边,先进行判断再自增,此时a已经为false了,双与运算符可直接判断为false,右边即使有表达式也不再计算,如后面还有自增运算符也不执行了,还按照左边的值输出
三元运算符
关系表达式?表达式1:表达式2;
关系表达式先进行判断,结果为真输出表达式1结果,为假则输出表达式2;
例如:
int a=10;
int b=20;
int max=a>b?a:b;//先对a>b进行判断,结果为真则输出a,否则则输出b;
System.out.println(max);//所以此时控制台输出结果为b,也就是20;
关系表达式案例:
public class maxHeight{
public static void main(string[]args){
int H1=156;
int H2=160;
int H3=170;
int max1=H1>H2?H1:H2;
int max2=max1>H3?max1:H3;
System.out.println(max2);
}
}