# 表達式與運算符
[TOC]
## 導學
本節課主要講解運算符,運算符主要類似于數學中的加減乘除符號,本節課就來看看運算符在編程語言中的作用。
## 表達式
因為,在本次課程中會多次提到表達式所以先來明確一下表達式的概念。
**表達式是由運算符和操作數(運算子)組成的**,
~~~
int sum=num1+num2;//這就是一個表達式,
//+加號和=等號是運算符,num1和num2和sum是操作數。
~~~
## 運算符
Java 語言中的運算符除了具有優先級之外,還有一個結合性的特點。當一個表達式中出現多種運算符時,執行的先后順序不僅要遵守運算符優先級別的規定,還要受運算符結合性的約束,以便確定是自左向右進行運算還是自右向左進行運算。這些運算符按照操作數的數量可以分為單目運算符(只對一個操作數進行操作)、雙目運算符(對兩個操作數進行操作)和三目運算符。
### 算術運算符
Java 中的算術運算符主要用來組織數值類型數據的算術運算,按照參加運算的操作數的不同可以分為一元運算符和二元運算符。
* 一元運算符

* 二元運算符

### 賦值運算符

### 關系運算符

### 邏輯運算符
邏輯運算符把各個運算的關系表達式連接起來組成一個復雜的邏輯表達式,以判斷程序中的表達式是否成立,判斷的結果是 true 或 false。

### 條件運算符
Java中的條件運算符指的是三目運算符。
語法:
~~~
布爾表達式?表達式1:表達式2
~~~
實例:
~~~
int age = 16;
String ageStr = age > 18 ? "成年" : "未成年";
System.out.println(ageStr); // 未成年
~~~
### 位運算符
關于位運算符,不重點給大家介紹,因為在實際的開發中用的比較少,大家只需要記住,運算速度最快的就是位運算。
### 運算符的優先級

在本圖中運算符的優先級由高到低。
## 練習
一、選擇
1. 設有如下變量,以下哪些語句編譯不出錯?

~~~
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. 下面代碼的輸出結果為?

~~~
A. x=11,y=11 B. x=10,y=11 C. x=10,y=12 D.x=12,y=10
~~~
5. 執行下列程序段后,m,x,y的值分別是?

~~~
A. true,2,4 B. false,3,3 C. true,3,3 D.false,2,4
~~~
6. 下列程序段執行后,k的結果是?

~~~
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的值
}
}
~~~