Hello,大家晚上好,小超最近一直在堅持着學Java,每天都在學習中做筆記,今天正好來將前天學的Java運算符和流程控制語句來總結一下,就當做複習了。
另外,如果在CSDN上格式或者模板比較難看的話,大家可以在GitHub上下載或者clone我的筆記,裏面內容詳細(聽視頻的時候瘋狂的敲字!)
一、數據類型補充的問題:
數據類型轉換之默認轉換:
byte , short , char ——int ——long ——float——double
long:8個字節
float:4個字節
那麼爲什麼float反而在long後面呢?
A: 它們底層的存儲結構不同
B: float表示的數據範圍比long範圍還要大:
Long:2^63-1
Float: 3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^114 > 2^63-1
①Java語言中的字符char可以存儲一箇中文漢字嗎?爲什麼呢?
可以。因爲Java語言中的字符佔用兩個字節
②Java語言採用的是Unicode編碼。
二、運算符:
- 運算:對變量和常量進行操作的過程叫作運算
- 運算符:對常量和變量進行操作的符號稱爲運算符
- 操作數:參與運算的數據稱爲操作數
- 用運算符把常量或者變量連接起來符號java語法的師資就可以稱爲表達式,不同運算符連接的式子體現出來的是不同類型的表達式
1、算術運算符:
①OperatorDemo.java
②運算符的優先級:
看一下例題:
int x = 4;
int y = (x++) + (++x) + (x*10);
System.out.println("x:"+x+",y:"+y);
//4+6+6*10 = 70
2、賦值運算符:
基本賦值運算符:=
擴展放入賦值運算符:+=、-=、*=、/=、%=
易錯題1:
short s = 1 , s = s + 1; short s = 1 , s += 1;
上面的代碼有沒有問題?如果有,哪裏有問題?
第一個是之前的精度損失(先s+1先換成了int類型),但是第二個運算沒有問題,s += 1等價於s = (s的數據類型)(s + 1)
3、比較運算符:
特點:
無論你的操作是簡單還是複雜,結果是boolean類型
下面這麼寫是有問題的:
boolean flag = (a = b);
System.out.println(flag);
a = b首先表示的是把b的值賦給a,a就成爲int類型了,所以會顯示跟之前一樣的精度損失,但是修改到:boolean flag = (a == b);就是正確的了
4、邏輯運算符:
1、邏輯運算符用於連接布爾型表達式,在java中不可以寫成3 < x <y,應該寫成x > 3 & x < 6
2、“&”和“&&”的區別:
①單&時,左邊無論真假,右邊都進行運算;
② 雙&時,如果左邊爲真,右邊參與運算,如果左邊是假,那麼右邊不參與運算(具有短路效果),開發中常用的運算符是||、!、&&
③|和||的區別同理,雙或時,左邊爲真,右邊不參與運算
3、異或(^)與或(|)的不同之處是:當左右都爲true時,結果爲false
5、位運算符:(&、|、^、~、>>、<<、>>>)
要做位運算,後弦要把數據轉換爲二進制
^的特點:某一個數據對另一個數據異或兩次,該數本身不變——可以用來做加密算法
過程分析如下:
面試題:
①請自己實現兩個整數變量的交換(沒有明確指定數據的類型時默認是int型):
其實方法2和3類似的還可以乘除等等,最重要的是方法四,一句話搞定
左移、右移、>>>運算符的介紹,下面是分析:
2、 請用最有效的方式寫出計算2乘以8的結果:
System.out.println(2 << 3);
6、三目運算符:
格式:(關係表達式)?表達式1:表達式2;
如果條件爲true,運算的結果就是表達式1
如果條件爲false,運算的結果就是表達式2
下面是一個demo例子:求x和y的最大值:
7、條件運算符的練習:
(1)、獲取3個整數中最大值
(2)、判斷兩個數據是否相等
1、鍵盤錄入數據:
(1) 鍵盤錄入數據概述:
我們目前在寫程序的時候,數據值都是固定的,但是實際開發中,數據值肯定是變化的,所以,準備把數據改成鍵盤錄入,提高程序的靈活性。
(2) 如何實現鍵盤錄入數據呢?
導包(位置放在class定義的上面)
Import java.util.Scanner;
創建對象:
Scanner sc = new Scanner(System.in);
接收數據:
Int x = sc.nextInt();
2、強化練習:
鍵盤錄入兩個數據,並對這兩個數據求和,輸出其結果
鍵盤錄入兩個數據,獲取這兩個數據中的最大值
鍵盤錄入三個數據,獲取這三個數據中的最大值
鍵盤錄入兩個數據,比較這兩個數據是否相等
三、流程控制語句:
-
在一個程序執行過程中,各條語句的執行順序對程序的結果是有直接影響的。也就是說程序的流程對運行結果有直接的影響,所以,我們必須清楚每條語句的執行流程,而且很多時候我們要通過控制語句的執行順序來實現我們要完成的功能 1、流程控制語句分類: 順序結構 ①順序結構概述:是程序中最簡單最基本的流程控制,沒有特定的語法結構,按照代碼的先後順序,依次 執行,程序中大多數的代碼都是這樣執行的 ②總的來說:寫在前面的先執行,寫在後面的後執行 ③簡單小例子:
2、選擇結構(分支結構)
選擇結構有特定的語法規則,代碼要執行具體的邏輯運算進行判斷,邏輯運算的結果有兩個,所以產生選擇,按照不同的選擇執行不同的代碼
Java語言提供了兩種選擇結構語句:
If語句:
If語句的三種格式:
第一種格式:if(關係表達式){語句體}
執行流程:
首先判斷關係表達式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體
看一下簡單的小例子:
注意事項:
A:比較表達式無論是簡單還是複雜,結果必須是boolean類型
B: if語句控制的語句體如果是一條語句,大括號可以省略;如果是多條語句,就不能省略。建議永遠不要省略
C: 一般來說:有左大括號就沒有分號,有分號就沒有左大括號
If語句格式2:
If(比較表達式){語句體1}else{語句體2}
執行流程:首先計算比較表達式的值,看其返回值是true還是false,如果是true就執行語句體1,否則執行語句體2
(else後面是沒有表達式的)
If語句格式2的練習:
A:獲取兩個數據中較大的值
B:判斷一個數據是奇數還是偶數:
-
我們前面說過的三元運算符,它根據比較判斷後,給出的也是兩種結果,所以,這種情況和if語句的第二種格式很相似,他們在某些情況下是可以相互轉換的 三元運算符的操作都可以使用if語句改進,反之不成立 什麼時候不成立呢? 當if語句控制的語句體是一條輸出語句的時候,就不成立。因爲三元運算符是一個運算符,必須要求有 一個結果返回,而輸出語句卻不能作爲一個返回結果。
If語句第三種格式:——適合做多個判斷
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)
下面是一個簡單的demo小例子:
下面是一些練習:
鍵盤錄入x的值,計算出y的值,y和x的關係滿足:
X >= 3 y = 2x + 1
-1 <= x <3 y = 2x
X <= -1 y = 2x – 1
-
-
- 鍵盤錄入月份的值,輸出季節:
-
歡迎關注微信公衆號"空谷小莜藍",大家一起努力,實驗室快關門了,溜了溜了~~~