# 表达式与运算符
[TOC]
## 导学
本节课主要讲解运算符,运算符主要类似于数学中的加减乘除符号,本节课就来看看运算符在编程语言中的作用。
## 表达式
因为,在本次课程中会多次提到表达式所以先来明确一下表达式的概念。
**表达式是由运算符和操作数(运算子)组成的**,
~~~
int sum=num1+num2;//这就是一个表达式,
//+加号和=等号是运算符,num1和num2和sum是操作数。
~~~
## 运算符
Java 语言中的运算符除了具有优先级之外,还有一个结合性的特点。当一个表达式中出现多种运算符时,执行的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的约束,以便确定是自左向右进行运算还是自右向左进行运算。这些运算符按照操作数的数量可以分为单目运算符(只对一个操作数进行操作)、双目运算符(对两个操作数进行操作)和三目运算符。
### 算术运算符
Java 中的算术运算符主要用来组织数值类型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。
* 一元运算符
![](https://img.kancloud.cn/d6/e9/d6e975a67e721cab34a139601155db0c_652x139.png)
* 二元运算符
![](https://img.kancloud.cn/83/9c/839c576f04111df033d19f73647bbd51_637x205.png)
### 赋值运算符
![](https://img.kancloud.cn/f4/71/f471d7204413366f4f89b69f7dc0f2fd_637x320.png)
### 关系运算符
![](https://img.kancloud.cn/56/0d/560d61e565ee9bdb27a0146716ece910_575x600.png)
### 逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
![](https://img.kancloud.cn/2a/f8/2af8297d04c64cd68cb586fbff1f3831_638x286.png)
### 条件运算符
Java中的条件运算符指的是三目运算符。
语法:
~~~
布尔表达式?表达式1:表达式2
~~~
实例:
~~~
int age = 16;
String ageStr = age > 18 ? "成年" : "未成年";
System.out.println(ageStr); // 未成年
~~~
### 位运算符
关于位运算符,不重点给大家介绍,因为在实际的开发中用的比较少,大家只需要记住,运算速度最快的就是位运算。
### 运算符的优先级
![](https://img.kancloud.cn/53/1f/531f558697ca61b2669bb9f122c37615_846x404.png)
在本图中运算符的优先级由高到低。
## 练习
一、选择
1. 设有如下变量,以下哪些语句编译不出错?
![](https://img.kancloud.cn/80/28/80285297d6c648fddd1acfee859f3421_190x160.jpg)
~~~
A. c=c+i; B. s+=i; C. i+=s; D.c+=s;
~~~
2. 若有 a=3,则执行下列语句为a的值为? a+=a\*=a;
~~~
A. 3 B. 12 C. 9 D.18
~~~
3. 下面的运算符中,用于执行除法运算是哪个?
~~~
A. / B. \ C. % D.*
~~~
4. 下面代码的输出结果为?
![](https://img.kancloud.cn/76/5c/765cac547e500e17dda9a582e408bf87_438x155.png)
~~~
A. x=11,y=11 B. x=10,y=11 C. x=10,y=12 D.x=12,y=10
~~~
5. 执行下列程序段后,m,x,y的值分别是?
![](https://img.kancloud.cn/09/06/090620b82e9211f24bbd3a14230e60db_167x96.png)
~~~
A. true,2,4 B. false,3,3 C. true,3,3 D.false,2,4
~~~
6. 下列程序段执行后,k的结果是?
![](https://img.kancloud.cn/cd/ad/cdadc660309cf1a7cdf071064cd2ae9e_243x74.png)
~~~
A. -2 B. 20 C. 11 D.9
~~~
二、编程
1. 根据任务要求完成本题。
~~~
public class MathDemo {
public static void main(String[] args) {
//将变量m的初值赋值为10,变量n的初值赋值为5
//变量m的值加3,n的值加5
//求m和n的平均值,并将结果存于变量p中
//求m的平方乘以n的平方,并将结果存于变量q中
//将p和q的值打印输出
}
}
~~~
2. 定义三个整型变量a、b、c,他们的初始值分别为4、15、20。对表达式进行运算。
~~~
public class SuanShuDemo {
public static void main(String[] args) {
//声明三个整型变量a、b、c
//分别为a,b,c赋值为4,15,20
//计算(b/a)+c的值 ,并赋值给变量m
//计算(c%b)*a-c的值,并赋值给变量n
//输出m和n的值
}
}
~~~