Java 运算符和分支结构

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:

  • 短路逻辑运算
  • 赋值运算
  • 递增递减运算
  • 三目运算
  • if-else
  • switch-case
  • java运算符优先级

赋值语句

实例

public class Test2 {
public static void main(String[] args) {
//赋值语句  += -= *=  /=  %=
int a=100;

a +=10;//a=a+10; a=110;
System.out.println("a="+a);//a=110;

a -=10;//a=a-10;  a=110-10;  
System.out.println("a="+a);//a =100;

int b=100;
b *=10;//b=b*10;  b=100*10;
System.out.println("b="+b);//b=1000

b /=10;//b=b/10;  b=1000/10;
System.out.println("b="+b);//b=100

int c=100;
c %=10;//c=c%10; c=100%10
System.out.println("c="+c);//c=0

}
}

自增自减运算符

1、自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数。

实例

public class Test3 {//表示类  Test3类
public static void main(String[] args){//程序的入口
// //递增符号(自增符号) ++   递减符号(自减符号)--
int a=10;
a++;//a=a+1;a=10+1;
System.out.println("a="+a);//a=11

int b=10;
++b;//b=b+1; b=10+1;
System.out.println("b="+b);//b=11

int c=10;
c--;//c=c-1; c=10-1;
System.out.println("c="+c);//c=9;

int d=10;
--d;//d=d-1;d=10-1;
System.out.println("d="+d);

}


}

递增符号 a++与++a的区别

Test.java 文件代码:

public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//递增符号  a++与++a的区别
int a=10;
//a++  先操作再自增
//1.System.out.println(a) 2.a=a+1;  a=10+1
System.out.println(a++);//10  a++   a=a+1  a=10+1
System.out.println("a="+a);//a=11

int b=10;
//++b  先自增后操作
//1.b=b+1 b=11  2,System.out.println(b)
System.out.println(++b);//11  ++b   b=b+1  b=10+1

int c=10;
int d=c++;//1.int d=c;  d=10 2.c=c+1;  c=11
System.out.println("c="+c);//c=11
System.out.println("d="+d);//d=10


}


}

短路逻辑

Test.java 文件代码:

public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//短路逻辑与自增符号
int i=100,j=200;
//短路逻辑  &&
//false&&     =false   &&符号前面如果是false,&&后面的表达式不执行
boolean b=(i>j)&&(i++>100);//false&&false  i=i+1; i=101
System.out.println("b="+b);//false
System.out.println("i="+i);//100

//短路逻辑 ||
//true||     =true     ||符号前面如果是true,||后面的表达式不执行
boolean c=i>0||++j>200;//true||true  201>200
System.out.println("c="+c);//true
System.out.println("j="+j);//200

//表达式
int d,e,f,g;
d=e=f=100;
System.out.println(g=100);//g=100表达式之值即为所赋之值100
}


}

递增递减运算符

实例

实例

public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//递增符号  a++与++a的区别
int a=10;
//a++  先操作再自增
//1.System.out.println(a) 2.a=a+1;  a=10+1
System.out.println(a++);//10  a++   a=a+1  a=10+1
System.out.println("a="+a);//a=11

int b=10;
//++b  先自增后操作
//1.b=b+1 b=11  2,System.out.println(b)
System.out.println(++b);//11  ++b   b=b+1  b=10+1

int c=10;
int d=c++;//1.int d=c;  d=10 2.c=c+1;  c=11
System.out.println("c="+c);//c=11
System.out.println("d="+d);//d=10


}


}


短路逻辑运算符

当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

实例

public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//短路逻辑与自增符号
int i=100,j=200;
//短路逻辑  &&
//false&&     =false   &&符号前面如果是false,&&后面的表达式不执行
boolean b=(i>j)&&(i++>100);//false&&false  i=i+1; i=101
System.out.println("b="+b);//false
System.out.println("i="+i);//100

//短路逻辑 ||
//true||     =true     ||符号前面如果是true,||后面的表达式不执行
boolean c=i>0||++j>200;//true||true  201>200
System.out.println("c="+c);//true
System.out.println("j="+j);//200

//表达式
int d,e,f,g;
d=e=f=100;
System.out.println(g=100);//g=100表达式之值即为所赋之值100
}


}

解析: 该程序使用到了短路逻辑运算符(&&),首先判断 a<4 的结果为 false,则 b 的结果必定是 false,所以不再执行第二个操作 a++<10 的判断,所以 a 的值为 5。


三目运算

实例

Test.java 文件代码:

public class Test6 {
public static void main(String[] args) {
//三目运算
int a=100,b=200;
//int flag=false?3:4;
int flag=a>b?3:4;//boolean?表达式1:表达式2;      boolean为true选择表达式1,为false选择表达式2
System.out.println("flag="+flag);//flag=4

int c=-1;
String r=c>0?"正数":(c==0?"0":"负数");
System.out.println("r="+r);//r="负数"
//取两个数的最大值
int d=6,e=8;
int max=d>e?d:e;//false?d:e;
System.out.println("最大值max为:"+max);
}


}

if-else条件语句

实例

Test.java 文件代码:

public class Test8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// if条件语句
double time = 10.00;
if (time >= 9.00) {// if(boolean){} boolean为true执行if里面的语句块
System.out.println("迟到了");
}
// if-else语句
int num = 2;
if (num > 2) {// false
System.out.println(num + "大于2");
} else {// num<=2
System.out.println(num + "小于等于2");// <=2
}
// if -else if
double score;
System.out.println("请输入考生考试成绩score:");
Scanner scanner = new Scanner(System.in);
score = scanner.nextDouble();
if (score < 0 || score > 100) {//score<0     score>100
System.out.println("输入的成绩不在范围之内");
} else if (score >= 90) {
System.out.println("优");
} else if (score >= 80) {// 80<=score<90
System.out.println("良");
} else if (score >= 70) {// 70<=score<80
System.out.println("中");
} else if (score >= 60) {// 60<=socre<70
System.out.println("及格");
} else {// score<60
System.out.println("不及格");
}
scanner.close();
}


}

switch-case语句结构

看下面的例子:

public class Test9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//switch-case语句块
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要选择的功能 1.充值话费  2.查询余额  3.人工服务");
int num=scanner.nextInt();//接收输入的数
//switch-case
switch(num){
case 1:
System.out.println("充值话费");
break;//终止中断当前的case语句块
case 2:
System.out.println("查询余额");
break;
case 3:
System.out.println("人工服务");
break;
default:
System.out.println("您输入的数字不在服务区");
break;
}
scanner.close();
}



Java运算符优先级

当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

例如,(1+3)+(3+2)*2,这个表达式如果按加号最优先计算,答案就是 18,如果按照乘号最优先,答案则是 14。

再如,x = 7 + 3 * 2;这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

类别 操作符 关联性
后缀 () [] . (点操作符) 左到右
一元 + + - !〜 从右到左
乘性  * /% 左到右
加性  + - 左到右
移位  >> >>>  <<  左到右
关系  >> = << =  左到右
相等  ==  != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 左到右