學習java---判斷語句的使用

知識回顧:
1) 強調學習方法,it和其他知識不同的,數學,思維能力,抽象能力(難)語文,背。It是非常好學,工作22年,15年在軟件企業中(初級、中級、高級、系統分析師、架構師、技術總監、後面走管理)知識都是應用,反覆多敲多練。例如main,敲上上萬變。
2) 什麼是裝箱拆箱?
a) 裝箱,把基本類型變量轉換包裝類型
(包裝類型)Integer i = 10;(基本類型)
明顯=左邊右邊,不是一個相同類型,爲什麼在java中,自動裝箱(轉換)
真正代碼:(包裝類型)Integer i = new Integer(10);(包裝類型)
b) 拆箱,把包裝類型轉換基本類型
(基本類型)int j = i;(包裝類型)
明顯=左邊右邊,不是一個相同類型,爲什麼在java中,自動拆箱(轉換)
真正代碼:int j = i.intValue(); (包裝類型Integer提供方法intValue,它結果是Integer類型裏值,10整數)
爲什麼寫了不報錯,底層工作原理。瞭解即可。真正開發你寫上面代碼能運行即可。
3) 三目運算符,java唯一一個三目運算符(三元運算符)
a) 有三個參數
b) 固定格式:(布爾表達式,只能有2個結果,true/false)(x>y)?x:y(死記)
4) 2個數求最大值?

package test;
	//導入單元測試import org.junit.Test;
	//求最大值public class Max {
	@Test	//求2個數最大值
	public void max2() {

		int x = 10;
    	int y = 20;
	
		//三目表達式
		int max = (x>y) ? x : y;
		
		//下面+不是一個數字,如果遇到字符串,+連接符,連接兩邊字符串
		System.out.println("最大值是:" + max);
	}
	
	@Test	//求3個數最大值
	public void max3() {
		//思路?2次三目運算符應用
		int x = 10;
		int y = 20;
		int z = 30;
		
		int max = (x>y) ? x : y;	//把x和y中最大值就賦值給max變量
		//複用上面max變量,變量可以再次賦值
		max = (max>z) ? max : z;
		
		System.out.println("最大值是:" + max);
	}}

今天內容:以後開發中最常見語法
流程控制:
1) 異常
2) 分支判斷
a) 單分支 if
b) 多分支 switch
3) 循環結構
a) for
b) while
c) do-while
這些結構幾乎後面開發中每天都用!!

流程控制:
1) 一般代碼順序執行,都執行
2) 判斷是否執行,根據條件部分代碼執行,部分代碼不執行,其中就會跳過部分代碼(if語句,三目運算符)
3) 循環,反覆執行一段代碼

1) 異常
a) 判斷執行(部分代碼執行,部分代碼不執行)
b) 遇到關鍵字:try試圖/catch捕獲異常/finally最終/throw拋出異常/throws接收異常
c) 所有異常父親:Exception
2) 經典異常,主動創建異常
被0除,數學上 1/0,分母不能爲0,規定。出錯,java如何處理錯誤?

一般情況下控制檯中出現紅色字就是錯誤。

怎麼看英文:找一些關鍵字 Exception異常,main線程(操作系統)
java.lang.ArithmeticException,java提供常見異常Arithmetic數學
具體錯誤:/ by zero,違反了分母爲0規則

package test;
public class TestArea { 	
public static void main(String[] args) { 		
//處理異常 try/catch,語法:固定格式
		try { 			
		 	//沒有就執行下面的語句,一旦出錯跳入catch中 	
		 	//可能出錯代碼 	int y = 100/0;		
		 	//編寫,保存:編譯都不會做檢查 		
		 	System.out.println(y);		  
			System.out.println("正確"); 		
		}catch(Exception e) { //已經出錯,纔會執行,不出錯,就不執行
			System.out.println("錯誤"); 		
			}
		 	System.out.println("執行完成"); 	
		 }
 }

finally 是try/catch不論代碼執行正常還是錯誤都必須執行代碼
特殊作用,以後例如數據庫代碼中,釋放Connection鏈接,非常耗費資源,必須釋放資源。

package test;
public class TestArea {
	public static void main(String[] args) {
				try {
			int y = 100/0;
			System.out.println("正確");
		}catch(Exception e) {
			//展示具體錯誤信息
			System.out.println("錯誤:"+ e.getMessage());
		}finally {
			//System.err打印字紅色,error錯誤
			System.err.println("管你正確還是錯誤,都必須執行我!!!");
		}
		System.out.println("執行結束");
	}
}

Try、catch就是典型流程控制,如果正常,我們只執行裏面try{}部分代碼,如果出錯,try中出錯語句後面代碼就不會執行,直接跳轉catch中代碼。不論代碼執行哪些try也好,catch也好,都必須執行finally中的內容。

Throw 拋出異常
Throws 接收異常
Try/catch屬於自己處理異常,如果異常處理不了呢?
攤上大事了,我沒本事去解決?throw就可以把異常交給上級(java就是你的調用者)

package test;
public class TestArea {	//手寫,提示生成,兩種方式都可以接收異常
	public static void main(String[] args) throws Exception{
		try {
		int y = 100/0;		// by zero
		System.out.println("正確");
	}catch(Exception e) {
		//展示具體錯誤信息
		System.out.println("錯誤:"+ e.getMessage());
		
		//拋出異常
		throw new Exception("出錯啦,分母不能是零!");	//創建一個新的異常,拋出,字符串錯誤信息
	}finally {
		//System.err打印字紅色,error錯誤
		System.err.println("管你正確還是錯誤,都必須執行我!!!");
	}
	
	System.out.println("執行結束");
}}

經典判斷,分支語句
1) if語句(最多)
男人(男人負責工作掙錢)和女人(女人負責貌美如花)
package test;

public class TestArea { //手寫,提示生成,兩種方式都可以接收異常
public static void main(String[] args){
boolean isMan = false; //true,男人,false,女人

	/*
	 * 如果是男人控制檯輸出:男人負責工作掙錢
	 * 如果是女人控制檯輸出:女人負責貌美如花
	 */
	
	//分支判斷語句
	if (isMan) {		//括號內是布爾表達式
		System.out.println("男人負責工作掙錢");
	}else {			//是女人要做的事情
		System.out.println("女人負責貌美如花");
	}
}

}

2) switch語句(很少)
switch可以完全使用if語句去實現,只不過它更加簡潔
swtich和case,default,關鍵字
業務需求:電話
電話:110警察,112醫生,114查詢電話號碼,119火警

package test;

public class TestArea { //手寫,提示生成,兩種方式都可以接收異常
public static void main(String[] args){
//電話:110警察,112醫生,114查詢電話號碼,119火警
/*
* 這個是switch特殊點,和日常思考方式不同
* 找到第一個匹配執行裏面的語句,之後後面不判斷,所有語句都執行
* 找到匹配前面代碼都不執行,都跳過
*/
int phone = 135;
switch (phone) {
case 110:
System.out.println(“我是警察”);
break; //執行完成,就跳出switch語句
case 112:
System.out.println(“我是醫生”);
break;
case 114:
System.out.println(“我是查號臺”);
break;
case 119:
System.out.println(“我是火警”);
break;
default :
System.out.println(“這個電話不認識”);
}
System.out.println(“執行完成”);
}
}

Switch語句可以用if語句替代

package test;

import org.junit.Test;

public class TestArea {
	@Test		//多重if語句嵌套
	public void testIf() {
		int phone = 120;
		if(phone==110) {
			System.out.println("我是警察");
		}else if(phone==120) {
			System.out.println("我是醫生");
		}else if(phone==114) {
			System.out.println("我是查號臺");
		}else if(phone==119) {
			System.out.println("我是火警");
		} else {
			System.out.println("這個電話不認識");
		}
	}
@Test
public void testSwitch(){
	int phone = 135;
	switch (phone) {
	case 110:
		System.out.println("我是警察");
		break;		//執行完成,就跳出switch語句
	case 120:
		System.out.println("我是醫生");
		break;
	case 114:
		System.out.println("我是查號臺");
		break;
	case 119:
		System.out.println("我是火警");
		break;
	default : 
		System.out.println("這個電話不認識");
	}
	System.out.println("執行完成");
}

}

上午總結:
1) 異常:程序中會出現錯誤,日常開發工具中出錯(編譯器錯誤),程序隱性的錯誤。(運行時錯誤)
a) 總的異常,所有異常父親,Exception,所有異常根
b) try 試圖,只要代碼中可能發生異常,這樣代碼就必須放在try中
c) catch 捕獲異常,如果出錯就執行catch裏面代碼 Exception e,e.getMessage()
d) finally 對複雜對象要釋放資源(數據庫鏈接對象Connection)不論代碼正確錯誤都執行
e) throw 拋出異常,我們自己不去處理,我們處理不了,交給代碼調用方法,main來處理。
f) throws 接收異常,main() throws Exception{},接盤俠
2) 流程控制
a) 順序結構:代碼從上往下執行,從左往右執行int i = 100*200;
b) 分支結構:有些代碼執行,有些代碼不執行,根據條件
c) 循環結構:反覆執行一段代碼
3) 分支語句
a) 單分支:if語句
b) 多分支:if-if else-else,switch語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章