前言
该部分主要了解Java语言中的运算符及其表达式的定义、用法等并以这个为基础进行程序控制语句的学习。
一、运算符是什么?
运算符负责对数据进行计算和处理。运算符一般由一个或多个符号构成,如+、>=、<、<=。少数运算符由两种含义,应根据上下文理解,如-3中的-是作为一元运算符(负号)使用,而a-6中的-是作为二元运算符(减号)使用。运算符由优先级。先计算优先级较高的,再计算优先级较低的。运算符也有结核性。
1.算数运算符
算数运算符主要用于整型或浮点型数据的运算。
二元运算符:
运算符 | 用法 | 含义 | 结合性 |
---|---|---|---|
+ | a+b | 加法 | 左 |
- | a-b | 减法 | 左 |
* | a*b | 乘法 | 左 |
/ | a/b | 除法 | 左 |
% | a%b | 模运算(求余) | 左 |
注意:整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN的结果。
一元运算符:
运算符 | 用法 | 含义 | 结合性 |
---|---|---|---|
+ | +a | 正数 | 右 |
- | -a | 负数 | 右 |
++ | ++a,a++ | 自增 | 右,左 |
– | –a,a– | 自减 | 右,左 |
算数运算符举例:
public class JavaOperator {
public static void main(String args[]){
int i=7;
int j=14;
float a=7.14f;
double b=7.0;
System.out.println("i+a="+(i+a));//整数与浮点数相加
System.out.println("i*j="+(i*j));//两个整数相乘
System.out.println("i/j="+(i/j));//连个整数相除,其结果还是整数(舍去小数点后的所有
System.out.println("i%j="+(i%j));//两个整数求余,注意求余必须是两个整型
System.out.println("a*b="+(a*b));//两个浮点数相乘
System.out.println("a/b="+(a/b));//两个浮点数相除
System.out.println("i++="+(i++));//先使用,后自增
System.out.println("++i="+(++i));//先自增,再使用
System.out.println("j--="+(j--));//先使用,后自减
System.out.println("--j="+(--j));//先自减,再使用
}
}
运行结果截图:
2.赋值运算
赋值运算符是二元运算符,左边的操作数必须是变量,右边的操作数为表达式,左右两边的类型如果一致,则直接将右边的值赋给左边的变量;如果不一致,则将表达式的值需要转换为左边变量的类型,再赋值。常见的扩展赋值运算符如下表所示:
运算符 | 示例 | 含义 |
---|---|---|
+= | count+=3 | count=count+3 |
-= | count-=3 | count=count-3 |
*= | count*=3 | count=count*3 |
/= | count/=3 | count=count/3 |
%= | count%=3 | count=count%3 |
3.条件运算符
条件运算符由?和:组成格式如下
3==7?false_0:true_1;//返回false_0
3==7//返回false
3!=7?true_1:false_0;//返回true_1
3!=7//返回true
条件运算符可以代替简单的if-else语句
4.位运算符
Java提供位操作运算符。所有的数在Java虚拟机中都会转换为补码二进制表示。位运算符不是对整个数进行运算,而是对该数二进制位上的0或1进行运算。位运算符如下表所示:
运算符 | 示例 | 含义 |
---|---|---|
& | a&b | 使a和b按位相与 |
| | a|b | 使a和b按位相或 |
~ | ~a | 对a按位取反 |
^ | a^b | 使a和b按位异或 |
<< | a<<b | 使a左移b位,右补零 |
>> | a>>b | 使a右移b位,左边补充符号位 |
>>> | a>>>b | 使a无符号右移b位,左边始终补填0 |
5.数学函数与常量
在Java中没有一个数的幂运算、三角函数运算、反函数运算等运算,这时就会引用Java中的Math类,在运用Math类前需要在源文件引用如下代码:
import static java.lang.Math.*;
二、表达式
表达式式程序设计语言的基本组成部分,表示一种求值的规则,是由运算符和操作数组成的符号序列。表达式根据运算符的优先级别和结合性,首先执行指定的计算,再返回某个值。
在对表达式进行运算时,遵循一定的规则,要按运算符的优先级别从高到低进行,同级的运算符则按从左到右的方向进行。Java运算符的优先级按照从高大到低的顺序展示在下表:
1 | . [ ] ( ) ++ – ! ~ instanceof |
---|---|
2 | new(type) |
3 | * / % |
4 | + - |
5 | >> >>> << |
6 | <> <= >= |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | | | |
13 | ?: |
14 | = += -= *= /= %= ^= |
15 | &= != <<= >>= >>>= |
三、控制流程
Java程序控制语句分为3类:选择、循环和跳转语句。其中,①选择语句根据条件表达式计算结果,并使程序可以选择不同的执行路径;②循环语句式程序能够重复执行一个或多个语句;③跳转语句允许程序以非线性的方式执行。
1.条件语句
if语句的执行过程如下:如果条件为真(true),则执行if后面的语句(statement);否则,执行else后面的语句(statement2)。任何时候两条语句都不可能同时执行。
通过使用if-else if阶梯确定某个月是什么季节
public class Season {
public static void main(String args[]){
int month=7;//初始化月份
String season;//声明字符串类型变量season
if(month==12||month==1||month==2)
season="Winter";
else if(month==3||month==4||month==5)
season="Spring";
else if (month==6||month==7||month==8)
season="Summer";
else if (month==9||month==10||month==11)
season="Autumn";
else
season="It is a wrong number!";//初始化的月份超出范围报错
System.out.println(month+" is in the "+season+".");//输出结果
}
}
运行结果截图:
该题目除了可以用if-else if语句执行,还可用switch语句执行。其中switch语句的执行过成为:表达式的值首先与每个case语句中的常量进行比较。如果发现了一个与之相匹配的,则执行该case语句后的代码,不在匹配后面的case语句。如果 没有发现一个case常量与表达式的值相匹配,则执行default语句。若没有default语句则什么也不执行。
public class Season {
public static void main(String args[]){
int month=7;//初始化月份
String season;//声明字符串类型变量season
switch (month){
case 12:
case 1:
case 2:season="Winter";break;
case 3:
case 4:
case 5:season="Spring";break;
case 6:
case 7:
case 8:season="Summer";break;
case 9:
case 10:
case 11:season="Autumn";break;
default:season="It is a wrong number!";
}
System.out.println(month+" is in the "+season+".");//输出结果
}
}
2.循环语句
while语句是Java最基本的循环语句,当它的条件表达式是true时,while语句重复执行循环体,循环体可以是一个语句或者语句块。
计算10!
public class Math {
public static void main(String args[]){
int mul=1;//初始化阶乘量
int i=1;//从1开始进行阶乘
while(i<=10){
mul*=i;
i++;
}
System.out.println("10!= "+mul);
}
}
运行结果截图:
该程序还可以使用for语句进行编写:
public class Math {
public static void main(String args[]){
int mul=1;//初始化阶乘量
for(int i=1;i<=10;i++){
mul*=i;
}
System.out.println("10!= "+mul);
}
}
该程序也可以用do-while进行编写:
public class Math {
public static void main(String args[]){
int mul=1;//初始化阶乘量
int i=1;
do{
mul*=i;
i++;
}while(i<=10);
System.out.println("10!= "+mul);
}
}
3.continue语句
有时需要强迫一次循环提前结束从而进行下一次循环。也就是说,可以继续运行循环,但是要忽略这次循环剩余的循环体的语句,这时就需要使用continue语句。
使用continue语句在每行打印5个数字
public class Continue {
public static void main(String args[]){
for(int i=1;i<=20;i++){
System.out.print(i+" ");
if(i%5!=0)//当i不能被5整除时继续打印数字不换行
continue;
System.out.println("");//当i不为5时需要换行后继续打印数字
}
}
}
运行结果截图:
参考
【1】Java此程序设计(第2版)清华大学出版社
【2】开源资料