一.java的运算符
运算符可分为:
算数运算符
自增自减运算符
关系运算符
逻辑运算符
赋值运算符
条件运算符
位运算符
1.算数运算符
算数运算符用在数学表达式中,它们的用法和在数学中的作用基本一样。算数运算符的含义如表所示。
运算符 | 说明 |
---|---|
+ | 加法,运算符两侧的值相加 |
- | 减法,左操作数减去右操作数 |
* | 乘法,操作符两侧的值相乘 |
/ | 除法,左操作数除以右操作数 |
% | 取模,左操作数除以右操作数的余数 |
例:
public class Test{
public static void main(String[] args){
int a=10;
int b=20;
int c=25;
System.out.println("a + b ="+( a + b ));
System.out.println("a - b ="+( a - b));
System.out.println("a * b ="+( a * b));
System.out.println("b / a ="+( b / a ));
System.out.println("b % a ="+( b % a));
System.out.println("c % a ="+( c % a));
}
}
运行结果如图所示
2.自增自减运算符
自增(++)、自减(–)是两个特殊的算数运算符,只需要一个操作数。含义如表所示
运算符 | 说明 |
---|---|
++ | 自增,操作数的值加1 |
- - | 自减,操作数的值减1 |
例1:自增运算++a应用实例
public class Test{
public static void main(String[] args){
int a = 10;
int b =20;
b=++a;
System.out.println("a="+a+",b="+b);
}
}
运行结果如图所示
例2:自增运算a++应用实例
public class Test{
public static void main(String[] args){
int a = 10;
int b =20;
b=a++;
System.out.println("a="+a+",b="+b);
}
}
运算结果如图所示
总之,b=a++或者b=++a,对a来说最后的结果都是自增1,但是对b来说结果就不一样了。a- -和- -a的情况于此类似。
3.关系运算符
关系运算符也称比较运算符,用于对两个操作数进行关系运算,以确定两个操作数之间的关系。常用的关系运算符的含义如表所示。
运算符 | 说明 |
---|---|
== | 比较两个操作数的值是否相等,如果是,则条件为真 |
!= | 比较两个操作数的值是否不相等,如果是,则条件为真 |
> | 比较左操作数的值是否大于右操作数的值,如果是,则条件为真 |
< | 比较左操作数的值是否小于右操作数的值,如果是,则条件为真 |
>= | 比较左操作数的值是否大于或等于右操作数的值,如果是,则条件为真 |
<= | 比较左操作数的值是否小于或等于右操作数的值,如果是,则条件为真 |
例:
public class Test{
public static void main(String[] args){
int a =10;
int b = 20;
if(a >b){
System.out.println("a>b");
}
if(a<b){
System.out.println("a<b");
}
if(a==b){
System.out.println("a==b");
}
}
}
运行结果如图所示
注意:如果要判断两个变量是否相等,不是使用=,而是==,=表示赋值,==表示判断
4.逻辑运算符
逻辑运算符主要用来把各个运算的变量连接起来,组成一个逻辑表达式,以判断某个表达式是否成立。判断结果为true或者false。逻辑运算符的含义如表所示。
例:逻辑运算符 !应用实例
public class Test{
public static void main(String[] args){
boolean flag = true;
System.out.println(!flag);
}
}
运行结果如图所示
逻辑运算符的重点是与和或两种运算,他们各有两种不同的实现。与操作的特点是若干个条件都满足时结果为真。一个不满足就为假。形式为&–&&两种。下面举例说明
例:&应用实例
public class Test{
public static void main(String[] args){
if(1==2 & 1/0==0){ // false & 错误
System.out.println("条件满足!");
}
}
}
运行结果如图
运行后发现代码出现错误,提示被除数为0,说明&对1==2和1/0=0这两个条件都进行了判断,即使第一个条件已经不成立,也会接着判断第二个条件。显然并没有必要接着判断。第一个条件不成立就注定了结果为false。
下面使用另外一种形式——&&
例:&&应用实例
public class Test{
public static void main(String[] args){
if(1==2 & 1/0==0){ // false & 错误
System.out.println("条件满足!");
}
}
}
运行结果如图
运行结果没出错,说明当判断1==2为false后,就终止了后面的判断。if表达式的结果为false。&&只有判断某个表达式为false后,后面不管多少个表达式都不再进行判断。
或运算的若干个条件有一个满足即可,或运算符的两种: | – ||
例 :| 应用实例
public class Test{
public static void main(String[] args){
if(1==1 | 1/0==0){
System.out.println("条件满足!");
}
}
运行结果如图:
可以看出,所有的判断条件都执行了,所以造成了错误。
事实上,对于或运算,有一个条件为true,结果就为true.对于类似的情况,就要使用||来完成。
例:|| 应用实例
public class Test{
public static void main(String[] args){
if(1==1 | 1/0==0){
System.out.println("条件满足!");
}
}
运行结果如图
从运行结果可以看出,没有判断1/0==0这个条件,||运算符判断有一个条件为true,结果就为true,不在判断其他条件。
5.赋值运算符
赋值运算符的主要功能是为各种不同类型的变量赋值,在java中,包括基本赋值运算符和复合赋值运算符。复合赋值运算符是在基本赋值运算符上结合算术运算符具有特殊意义的赋值运算符。如表所示:
运算符 | 说明 |
---|---|
= | 简单赋值运算符,把右操作符的值赋值给左操作数 |
+= | 加和赋值运算符,把左操作数和右操作数相加赋值给左操作数 |
-= | 减和赋值运算符,把左操作数和右操作数相减赋值给左操作数 |
*= | 乘和赋值运算符,把左操作数和右操作数相乘赋给左操作数 |
/= | 除和赋值运算符,把左操作数和右操作数相除赋给左操作数 |
%= | 取模和赋值运算符,把左操作数和右操作数取模后赋给左操作数 |
例:赋值运算符应用实例
public class Test{
public static void main(String[] args){
int a = 10;
int b=20;
System.out.println("a="+a+",b="+b);
a+=b; //等价于 a=a+b;
System.out.println("a+=b,a="+a);
}
}
运行结果如图:
6.条件运算符
条件运算符(?:)也称为三元运算符。语法形式如下
布尔表达式?表达式1:表达式2
运算过程为:如果布尔表达式的值为true,则返回表达式1的值,否则返回表达式2的值。
例:条件运算符应用实例
public class Test{
public static void main(String[] args){
int score = 65;
String result = (score >= 60)?"及格":"不及格";
System.out.println(result);
}
}
运行结果如图所示:
布尔表达式的结果为true,所以返回表达式1,结果为及格。
7.位运算符
位运算符主要用来对操作数的每个二进制位进行运算,常用位运算符及含义如表所示
运算符 | 说明 |
---|---|
<<= | 左移位赋值运算符 |
>>= | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^= | 按位异或赋值运算符 |
例:位运算符实例
public class Test{
public static void main(String[] args){
int a = 10;
int b = 20;
int c = 3;
c <<= 2;
System.out.println("c <<= 2 = "+c);
c>>=2;
System.out.println("c >>= 2 = "+c);
c >>= a;
System.out.println("c >>= a = "+c);
c &= a;
System.out.println("c &= a ="+c);
c ^= a;
System.out.println("c ^=a = "+c);
}
}
运行结果如图所示
二、分支结构
在java中有两种分支结构,分别是if语句和switch语句
1. if语句
一个if语句包含一个布尔表达式和一条或多条语句。语法如下
if(布尔表达式){
语句 //如果布尔表达式为true,则执行此语句。
}
例:if语句应用实例
public class Test{
public static void main(String[] args){
int x = 20;
if (x<30){
System.out.println("x < 30 为 true");
}
}
}
运行结果如图
1.2 if…else语句
if语句后面可以跟else语句,当if语句的布尔表达式值为false时,else语句被执行。语法格式如下
if (布尔表达式){
语句1 //布尔表达式为true时执行
}else{
语句2 //布尔表达式为false时执行
}
例:if …else应用实例
public class Test{
public static void main(String[] args){
int x = 30;
if (x<20){
System.out.println("if 语句");
}else{
System.out.println("else语句");
}
}
}
运行结果如图:
从运行结果可以看出,执行的是else语句 ,说明 布尔表达式为false。
1.3 if …else if …elsle语句
这种语句可以检测多种可能的情况,在使用该语句时,需要注意以下几点:
- if语句至多有一个else语句,else语句要在所有的 else if之后。
- if语句可以有若干个else if 语句
- 一旦其中一个else if 语句检查为true,将跳过其他的else if 和else 语句。
if …else if … else语句语法如下
if(布尔表达式1){
语句块1 //布尔表达式1为true执行
}else if(布尔表达式2){
语句块2 //布尔表达式2为true执行
}else{
语句块3 //以上布尔表达式都为false执行
}
例:多条件判断语句应用实例
public class Test{
public static void main(String[] args){
int x = 30;
if(x ==10){
System.out.println("x=10");
}else if(x==20){
System.out.println("x=20");
}else{
System.out.println("x=30");
}
}
}
运行结果如图所示
可见,前两个判断条件都是false。
1.4 嵌套的if …else 语句
嵌套的if…else语句就是说可以在if或者else if语句中使用if或者else if语句
语法如下:
if(布尔表达式1){
语句1 //布尔表达式1为true执行
if(布尔表达式2){
语句2 //布尔表达式2为true执行
}
}
例:嵌套的if …else 语句应用实例
public class Test{
public static void main(String[] args){
int x = 30;
int y=10;
if(x==30){
if(y==10){
System.out.println("x=30,y=10");
}
}
}
}
运行结果如图
2. switch 语句
switch语句判断一个变量与一系列值中的某个是否相等,每个值称之为分支。语法如下
switch(expression){
case value:
语句
break;//可选
case value:
语句
break; //可选
...(可以有任意多个case)
default: //可选
语句
}
例:
public class Test{
public static void main(String[] args){
char c = 'C';
switch(c){
case 'A':
System.out.println("A");
break;
case 'B':
System.out.println("B");
break;
case 'C':
System.out.println("C");
break;
default:
System.out.println("null");
}
}
}
运行结果如下:
提示:使用switch语句时,如果满足条件中没有break,那么就会在执行完成满足条件的case语句后,继续执行后面的case语句,判断其他case是否满足条件,直到switch结束或者遇到break为止