java中運算子運算元表示式語句使用詳解
1:運算
對常量和變數進行操作的過程稱為運算。
2:運算子
對常量和變數進行操作的符號稱為運算子。
3:運算元
參與運算的常量或者變數稱為運算元。
4:表示式
用運算子把常量或者變數連線起來符合java語法的式子就可以稱為表示式。
不同運算子連線的式子體現的是不同型別的表示式。
a
a + b
a > b
運算子:
算術運算子
賦值運算子
比較運算子
邏輯運算子
三目運算子
算術運算子:
+,-,*,/,
%,++,--
2./和%的區別?
/:除法,得到商
符號相同為正,不同為負
%:除法,得到餘數
符號和第一個運算元相同
%的應用:
x%3 等於 0 說明x能被3整除
x%2 等1 說明x是奇數
等0 說明x是偶數
3.++,--運算子(講完之後做練習)
作用:++就是加1,--就是減1。
自增自減運算子
++,--在運算的時候,可以放在運算元的前面,也可以放在運算元的後面
A:單獨使用
沒有區別
B:參與其他操作使用
後面:先操作,再自增
前面:先自增,再操作
class OperatorDemo3 {
public static void main(String[] args) {
int a = 3;
System.out.println(a);
System.out.println("-------------");
//a++;
//++a;
//System.out.println(a);
//int b = a++;
int b = ++a;
System.out.println(a);
System.out.println(b);
}
}
4.賦值運算子:
基本:=
擴充套件:+=
擴充套件的賦值運算子隱含了強制型別轉換:
int a = 10;
a += 20;
a = (a的資料型別)(a + 20)
5.關係運算符:
==,!=,>,>=,<,<=
注意:
A:比較運算子的結果肯定是boolean。
B:你到底是使用"="還是使用"==",你自己要清楚。
6.邏輯運算子:
&,|,!,^
&&,||
注意:
邏輯運算子用於連線關係表示式
結論:
&: 有false則false
|: 有true則true
!:改變結果,取反
^:相同false,不同true
記憶:情侶關係(男男,男女,女男,女女)
7.最常用的邏輯運算子;
!,&&,||
&&和&:
結果一樣,但是&&具有短路效果,左邊如果是false,右邊不執行。
||和|:
結果一樣,但是||具有短路效果,左邊如果是true,右邊不執行。
8.操作資料的個數。
三元運算子:
格式:?:
(比較表示式)?表示式1:表示式2;
執行流程:
如果條件為true,運算後的結果是表示式1;
如果條件為false,運算後的結果是表示式2;
需求:獲取兩個資料中的最大值
巢狀使用(獲取三個數的最大值)
9.我們目前在寫程式的時候,資料值都是固定的,但是實際開發中,資料值肯定是變化的,
所以,我準備把資料改進為鍵盤錄入,提高程式的靈活性。
鍵盤錄入資料的步驟:
A:導包
import java.util.Scanner;
位置:class之前,上面
B:建立鍵盤錄入物件
Scanner sc = new Scanner(System.in);
C:獲取鍵盤錄入資料
int i = sc.nextInt();
需求:鍵盤錄入兩個資料,並對這兩個資料求和,輸出其結果
分析:
A:鍵盤錄入兩個資料
三步實現
B:對這兩個資料求和
C:輸出其結果
需求:鍵盤錄入兩個資料,獲取這兩個資料中的最大值
需求:鍵盤錄入兩個資料,比較這兩個資料是否相等
10.流程控制語句:
A:順序結構(沒有基本格式,從上往下依次執行)
B:選擇結構(有格式)
if
switch
C:迴圈結構(有格式)
for
while
do...while
順序結構:
寫在前面的先執行,寫在後面的後執行
11.if語句
三種格式。
11.1 if語句格式1:
if(比較表示式) {
語句體
}
執行流程:
首先判斷比較表示式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體
需求:1.如果我得了100分爸爸就給我買飛機
2.如果數字是10,就輸出10這個數字
if語句的注意事項:
A:比較表示式無論簡單還是複雜,結果必須是boolean型別
B:一般來說:
有左大括號就沒有分號,有分號就沒有左大括號
11.2 if語句格式2:
if(比較表示式) {
語句體1;
}else {
語句體2;
}
執行流程:
首先判斷關係表示式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
需求:1.判斷兩個數的最大值(用if和三元實現)
2.判斷兩個數是否相等(用if和三元實現)
11.3 if語句的三種格式:
格式1:適合做一種情況的判斷
格式2:適合做二種情況的判斷
格式3:適合做多種情況的判斷
if語句格式3:
if(比較表示式1) {
語句體1;
}else if (比較表示式2) {
語句體2;
}
…
else {
語句體n+1;
}
執行流程:
首先判斷關係表示式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關係表示式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關係表示式…看其結果是true還是false
…
如果沒有任何關係表示式為true,就執行語句體n+1。
需求:
鍵盤錄入學生成績,根據學生成績判斷,輸出學生等級
90-100 A
80-89B
70-79C
60-69D
60以下E
練習:
需求:鍵盤錄入x的值,計算出y的並輸出。
x>=3y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1y = 2x – 1;
需求:鍵盤錄入月份的值,輸出對應的季節。
春 3,4,5
夏 6,7,8
秋 9,10,11
冬 12,1,2
獲取三個資料中的最大值
if語句的巢狀。
if() {
if語句
}
12 .switch語句的格式:
switch(表示式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
格式解釋:
A:switch表示這是switch語句
B:表示式
表示式的取值:byte,short,int,char
JDK5以後可以是列舉
JDK7以後可以是String
C:case後面跟的是要和表示式進行比較的值
D:語句體部分可以是一條或多條語句
E:break表示中斷,結束的意思,可以結束switch語句
F:default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。
執行流程:
首先計算出表示式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表示式的值不匹配,就會執行default語句體部分,然後程式結束掉。
需求:
鍵盤錄入一個數字(1-7),輸出對應的星期幾。
13.switch語句的注意事項:
A:case後面只能是常量,不能是變數。
B:多個case後面的值不能出現相同的。
C:default可以省略嗎?
可以。但是不建議。
D:break可以省略嗎?
可以。但是不建議。
容易出現case穿透。
E:default的位置一定要在最後嗎?
可以在任意位置,建議在最後。
F:switch語句的結束條件
a:遇到break
b:執行到末尾
練習:
1.class SwitchTest {
public static void main(String[] args) {
int x = 2;
int y = 3;
/*
switch(x){
default:
y++;
break;
case 3:
y++;
case 4:
y++;
}
*/
/*
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
*/
switch(x){
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);
}
}
1.輸入數字,輸出對應的星期
2.模擬做單項選擇題,根據你的選擇,給出對應的答案。(表示式是字元的情況)
3.用switch語句實現鍵盤錄入月份,輸出對應的季節
if語句和switch語句的各自使用場景:
if語句使用場景:
A:針對結果是boolean型別的判斷
B:針對一個範圍的判斷
C:針對幾個常量值的判斷
switch語句使用場景:
針對幾個常量值的判斷
switch語句能夠實現的,if一定能夠實現。反之不成立
14.迴圈語句組成:
A:初始化語句
一條或者多條語句,這些語句完成一些初始化操作。
B:判斷條件語句:
這是一個boolean表示式,這個表示式能決定是否執行迴圈體。
C:迴圈體語句
這個部分是迴圈體語句,也就是我們要多次做的事情。
D:控制條件語句
這個部分在一次迴圈體結束後,下一次迴圈判斷條件執行前執行。
通過用於控制迴圈條件中的變數,使得迴圈在合適的時候結束。
迴圈:
for
while
do..while
for迴圈:
for(初始化語句;判斷條件語句;控制條件語句) {
迴圈體語句;
}
執行流程:
A:執行初始化語句
B:執行判斷條件語句
如果是true:就繼續執行。
如果是false:就結束迴圈。
C:執行迴圈體語句
D:執行控制條件語句
E:回到B
執行次數:
A:初始化語句
只執行一次
B:判斷條件語句
一次以上
C:迴圈體語句和控制條件語句
0次以上
需求:
請在控制檯輸出10次"HelloWorld"
15.需求:
A:請在控制檯輸出資料1-10
B:請在控制檯輸出資料10-1
16.
求出1-10之間資料之和
分析:
A:獲取1-10的資料
for迴圈就OK了。
B:定義一個求和變數,用於儲存求和的結果。
求和變數的初始化值是0。
C:看如下的格式:
0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
...
看每一個式子:
int sum = 0;
1 = 0 + 1 // sum = sum + 1;
3 = 1 + 2 // sum = sum + 2;
6 = 3 + 3 // sum = sum + 3;
10 = 6 + 4 //...
15 = 10 + 5 //...
...
求和公式:
int sum = 0;
for(int x=start; x<=end; x++) {
sum += x;
}
System.out.println(sum);
現場做:
求和1-100案例:
int sum = 0;
for(int x=1; x<=100; x++) {
sum += x;
}
System.out.println(sum);
17. 需求:求出1-100之間偶數和
分析:
如何判斷資料是偶數。
什麼樣子的資料是偶數。
2,4,6,8,10,...
x%2 == 0
18.需求:求5的階乘
規則:
n! = n*(n-1)*(n-2)*...*3*2*1
19.while迴圈的格式:
while(判斷條件語句) {
迴圈體語句;
}
變形格式:
初始化語句;
while(判斷條件語句) {
迴圈體語句;
控制條件語句;
}
執行流程:
A:執行初始化語句
B:執行判斷條件語句
如果是true:就繼續執行。
如果是false:就結束迴圈。
C:執行迴圈體語句
D:執行控制條件語句
E:回到B
比對for迴圈:
for(初始化語句;判斷條件語句;控制條件語句) {
迴圈體語句;
}
需求:
1.請在控制檯輸出10次"HelloWorld"
2.求出1-10之間資料之和
3.求出1-100之間偶數和
20.for迴圈和while迴圈的區別
控制條件語句所控制的那個變數,在for迴圈結束後,就不能再被訪問到了,
而while迴圈結束還可以繼續使用,如果你想繼續使用,就用while,
否則推薦使用for。原因是for迴圈結束,該變數就從記憶體中消失,能夠提高記憶體的使用效率。
使用場景:
for迴圈適合針對一個範圍判斷進行操作
什麼到什麼之間,三位數等
while迴圈適合判斷次數不明確操作
21.我國最高山峰是珠穆朗瑪峰:8848m,我現在有一張足夠大的紙張,厚度為:0.01m。
請問,我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峰的高度?
分析:
A:定義統計變數,初始化值是0
B:摺疊一次,厚度就是以前的2倍
C:摺疊次數不明確,用while迴圈
class WhileTest2 {
public static void main(String[] args) {
int count = 0;
int end = 884800;
int start = 1;
while(start<=end) {
//摺疊一次
start*=2;
count++;
}
System.out.println(count);
}
}
22.do...while的格式:
do {
迴圈體語句;
}while((判斷條件語句);
變形格式:
初始化語句;
do {
迴圈體語句;
控制條件語句;
}while(判斷條件語句);
執行流程:
A:執行初始化語句
B:執行迴圈體語句
C:執行控制條件語句
D:執行判斷條件語句
如果是true:就繼續執行。
如果是false:就結束迴圈。
E:回到B
for(初始化語句;判斷條件語句;控制條件語句) {
迴圈體語句;
}
23.三種迴圈的區別?
A:do…while迴圈至少會執行一次迴圈體。
B:for迴圈和while迴圈只有在條件成立的時候才會去執行迴圈體
他們是可以相互轉換的。
我們在使用迴圈的時候到底該選擇誰呢?
優先考慮for迴圈,再考慮while迴圈,最後考慮do…while迴圈。
注意事項:
死迴圈
for(;;){}
while(true){}
24.break的使用場景:
A:在選擇結構switch語句中
B:在迴圈語句中
注意:
離開使用場景的存在是沒有意義的
break:
遇到break,就中斷整個迴圈。
預設情況下,break只能中斷它所屬的那個迴圈。
25.continue的使用場景:
在迴圈語句中
注意:
離開使用場景的存在是沒有意義的
continue 退出本次迴圈