1. 程式人生 > 其它 >零基礎學Java第二節(運算子、輸入、選擇流程控制)

零基礎學Java第二節(運算子、輸入、選擇流程控制)

本篇文章是《零基礎學Java》專欄的第二篇文章,文章採用通俗易懂的文字、圖示及程式碼實戰,從零基礎開始帶大家走上高薪之路!

第一章 運算子

1.1 算術運算子的概述和用法

  • 運算子

    對常量和變數進行操作的符號稱為運算子

  • 表示式

    用運算子把常量或者變數連線起來符號java語法的式子就可以稱為表示式。不同運算子連線的式子體現的是不同型別的表示式。
    定義兩個int型別的變數a,b,做加法(a + b)

  • 常用運算子

    算術運算子
    賦值運算子
    關係運算符
    邏輯運算子
    三元運算子

1.1.1 算數運算子概述

  • 什麼是運算子

    就是對常量和變數進行操作的符號。

  • 算數運算子有哪些

    * +,-,*,/,%,++,--

1.1.2 程式碼實戰

public class OperatorDemo {
	public static void main(String[] args) {
		//定義兩個int型別的變數
		int a = 5;
		int b = 3;
		
		System.out.println(a+b);
		System.out.println(a-b);
		System.out.println(a*b);
		System.out.println(a/b);
		System.out.println(a%b);
		System.out.println("------------");
		
		System.out.println(5/4);
		System.out.println(5.0/4);
		System.out.println(5/4.0);
	}
}

算數運算子取餘和除法的區別:

  • %:取餘運算子。得到的是兩個相除資料的餘數。
  • /:除法運算子。得到是兩個相除資料的商。
  • 使用場景: %:判斷兩個資料是否整除。
    ::::

1.1.3 字元和字串參與加法運算

  • 字元參與運算
    其實是拿該字元對應的數值來操作

    ‘a’	97
    ‘A’	65
    ‘0’	48
    
  • 字串參與運算
    這裡其實做的不是加法運算,而是字串拼接
    字串和其他型別的資料做拼接,結果是字串型別的。

1.1.4 程式碼實戰

public class OperatorDemo2 {
	public static void main(String[] args) {
		//定義兩個變數,一個int型別,一個char型別
		int a = 10;
		char ch = 'a';
		System.out.println(a + ch);
		System.out.println("----------------");
		
		//字串做加法
		System.out.println("hello"+"world");
		System.out.println("hello"+10);
		System.out.println("hello"+10+20);
		System.out.println(10+20+"hello");
	}
}

1.1.5 自增自減運算子的概述和用法

++,--運算子:對變數做加1或者減1的操作。

++或者--既可以放在變數的後面,也可以放在變數的前面。

單獨使用的時候,++或者--無論是放在變數的前面還是後面,結果是一樣的。

參與操作的時候:

如果++或者--在變數的後面,先拿變數參與操作,後變數++或者--

如果++或者--在變數的前面,先變數做++或者--,後拿變數參與操作

1.1.6 程式碼實戰

public class OperatorDemo {
	public static void main(String[] args) {
		//定義一個int型別的變數
		int a = 10;
		System.out.println("a:"+a);
		
		//a++;
		//a--;
		//++a;
		//--a;
		//System.out.println("a:"+a);
		
		//int b = a++;
		int b = ++a;
		System.out.println("a:"+a);
		System.out.println("b:"+b);
	}
}

1.2 賦值運算子的概述和用法

1.2.1 賦值運算子分類

  • 基本的賦值運算子:=

  • 擴充套件的賦值運算子:+=,-=,*=,/=,%=

    a+=20;相當於a =a + 20;

1.2.2 程式碼實戰

public class OperatorDemo {
	public static void main(String[] args) {
		//定義變數
		int a = 10; //把10賦值給int型別的變數a
		System.out.println("a:"+a);
		
		//擴充套件的賦值運算子:+=
		//把運算子左邊的資料和右邊的資料進行運算,然後把結果賦值給左邊
		//a = a + 20;
		a += 20;
		System.out.println("a:"+a);
		
		//short s = 1;
		//s = s + 1;
		
		//擴充套件的賦值運算子隱含了強制型別轉換。
		//a+=20
		//等價於
		//a =(a的資料型別)(a+20);
		short s = 1;
		s += 1;
		System.out.println("s:"+s);
	}
}

1.3 關係運算符的概述和使用

1.3.1 基本使用及注意事項

關係運算符包含以下內容:

==,!=,>,>=,<,<=

關係運算符的結果都是boolean型,也就是要麼是true,要麼是false。

注意事項:關係運算符“==”不能誤寫成“=”。

1.3.2 程式碼實戰

public class OperatorDemo {
	public static void main(String[] args) {
		//定義三個變數
		int a = 10;
		int b = 20;
		int c = 10;
	
		//==
		System.out.println(a == b);
		System.out.println(a == c);
		System.out.println("------------");
		
		//!=
		System.out.println(a != b);
		System.out.println(a != c);
		System.out.println("------------");
		
		//>
		System.out.println(a > b);
		System.out.println(a > c);
		System.out.println("------------");
		
		//>=
		System.out.println(a >= b);
		System.out.println(a >= c);
		System.out.println("------------");
		
		System.out.println(a == b);
		System.out.println(a = b);//20,把b的值賦值給了a,並把a作為結果輸出了
	}
}

1.4 邏輯運算子的概述和使用

1.4.1 邏輯運算子概述

邏輯運算子用於連線關係表示式,在Java中不可以寫成3<x<6,應該寫成x>3 && x<6

  • 邏輯運算子有哪些
    && || !

  • 結論:

    &&:有false則false。

    ||:有true則true。

    !:非false則true,非true則false。

1.4.2 程式碼實戰

public class OperatorDemo {
	public static void main(String[] args) {
		//定義變數
		int a = 3;
		int b = 4;
		int c = 5;
		
		//&&邏輯與
		System.out.println((a>b) && (a>c)); //false && false
		System.out.println((a<b) && (a>c)); //true && false
		System.out.println((a>b) && (a<c)); //false && true
		System.out.println((a<b) && (a<c)); //true && true
		System.out.println("------------");
		
		//||邏輯或
		System.out.println((a>b) || (a>c)); //false || false
		System.out.println((a<b) || (a>c)); //true || false
		System.out.println((a>b) || (a<c)); //false || true
		System.out.println((a<b) || (a<c)); //true || true
		System.out.println("------------");
		
		//!邏輯非
		System.out.println((a>b));
		System.out.println(!(a>b));
		System.out.println(!!(a>b));
	}
}

1.5 三元運算子的概述和使用

1.5.1三元運算子概述

  • 格式

    (關係表示式)?表示式1:表示式2;

    如果條件為true,運算後的結果是表示式1;
    如果條件為false,運算後的結果是表示式2;

1.5.2 程式碼實戰

public class OperatorDemo {
	public static void main(String[] args) {
		//定義兩個變數
		int a = 10;
		int b = 20;
		
		int c = (a>b)?a:b;
		System.out.println("c:"+c);
	}
}

1.5.3 三元運算子練習之比較兩個整數是否相同

public class OperatorTest {
	public static void main(String[] args) {
		//定義兩個int型別的變數
		int a = 10;
		//int b = 20;
		int b = 10;
		
		boolean flag = (a==b)?true:false;
		System.out.println(flag);
	}
}

第2章 鍵盤輸入

2.1 鍵盤輸入的基本步驟

2.1.1 鍵盤輸入 資料概述

我們目前在寫程式的時候,資料值都是固定的,但是實際開發中,資料值肯定是變化的,所以,把資料改進為鍵盤錄入,提高程式的靈活性。

鍵盤錄入資料的步驟:

  1. 導包(位置放到class定義的上面)
    import java.util.Scanner;

  2. 建立物件
    Scanner sc = new Scanner(System.in);

  3. 接收資料
    int x = sc.nextInt();

2.1.2 程式碼實戰

import java.util.Scanner;
/*
 * 為了提高程式的靈活性,我們把資料改進為鍵盤錄入。
 * 如何實現鍵盤錄入資料呢?目前使用JDK提供的類Scanner。
 * 如何使用Scanner來獲取資料呢?目前大家記住使用步驟即可。
 * 
 * 使用步驟:
 * 		A:導包
 * 			import java.util.Scanner;
 * 			注意:在一個類中,有這樣的順序關係
 * 				package > import > class
 * 		B:建立鍵盤錄入物件
 * 			Scanner sc = new Scanner(System.in);
 * 		C:獲取資料
 * 			int i = sc.nextInt();
 */
public class ScannerDemo {
	public static void main(String[] args) {
		//建立鍵盤錄入物件
		Scanner sc = new Scanner(System.in);
		
		//給出提示
		System.out.println("請輸入一個整數:");
		//獲取資料
		int i = sc.nextInt();
		
		//把獲取的資料輸出
		System.out.println("i:"+i);
	}
}

2.2 Scanner錄入資料練習之求兩個整數的和

鍵盤錄入兩個資料,並對這兩個資料求和,輸出其結果:

import java.util.Scanner;
/*
 * 需求:鍵盤錄入兩個資料,並對這兩個資料求和,輸出其結果
 */
public class ScannerTest {
	public static void main(String[] args) {
		//建立鍵盤錄入物件
		Scanner sc = new Scanner(System.in);
		
		//給出提示
		System.out.println("請輸入第一個整數:");
		int a = sc.nextInt();
		
		System.out.println("請輸入第二個整數:");
		int b = sc.nextInt();
		
		//對資料求和
		int sum = a + b;
		
		//輸出結果
		System.out.println("sum:"+sum);
	}
}

第3章 選擇流程控制語句

在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對執行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。

  • 流程控制語句分類

    1. 順序結構
    2. 選擇結構
    3. 迴圈結構

3.1 流程控制語句之順序結構概述和使用

3.1.1 順序結構概述

是程式中最簡單最基本的流程控制,沒有特定的語法結構,按照程式碼的先後順序,依次執行,程式中大多數的程式碼都是這樣執行的。

3.1.2 順序流程流程圖

3.1.3 程式碼實戰

public class OrderDemo {
	public static void main(String[] args) {
		System.out.println("開始");
		System.out.println("語句A");
		System.out.println("語句B");
		System.out.println("語句C");
		System.out.println("結束");
	}
}

3.2 if語句的格式

3.2.1 if語句格式1的概述和使用

if語句第一種格式:

if(關係表示式) {
	語句體
}

執行流程:

首先判斷關係表示式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體

程式碼實戰

public class IfDemo {
	public static void main(String[] args) {
		System.out.println("開始");
		
		//定義兩個int型別的變數
		int a = 10;
		int b = 20;
		
		//判斷兩個變數是否相等
		if(a == b) {
			System.out.println("a等於b");
		}
		
		//定義變數
		int c = 10;
		if(a == c) {
			System.out.println("a等於c");
		}
		
		System.out.println("結束");
	}
}

3.2.2 if語句格式2的概述和使用

if語句第二種格式:

if(關係表示式) {
	語句體1;
	}else {
	語句體2;
}

執行流程:

首先判斷關係表示式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2

程式碼實戰

public class IfDemo2 {
	public static void main(String[] args) {
		System.out.println("開始");
		
		//判斷一個數據是奇數還是偶數
		//思路:如果一個數據對2取餘的結果是0,說明該數是偶數
		//定義一個變數
		int a = 100;
		//重新給a賦值
		a = 99;
		
		if(a%2 == 0) {
			System.out.println("a是偶數");
		}else {
			System.out.println("a是奇數");
		}
		
		System.out.println("結束");
	}
}

3.2.3 if語句格式3的概述和使用

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

程式碼實戰

public class IfDemo3 {
	public static void main(String[] args) {
		System.out.println("開始");
		
		//假如x和y滿足如下的關係:
		//x>=3	y=2x+1
		//-1<=x<3	y=2x
		//x<-1	y=2x-1
		
		//根據給定的x的值,計算出y的值
		int x = 5;
		x = 0;
		x = -5;
		
		//定義變數y
		int y;
		
		if(x >= 3) {
			y = 2*x+1;
		}else if(x>=-1 && x<3) {
			y = 2*x;
		}else if(x<-1) {
			y = 2*x-1;
		}else {
			y = 0;
			System.out.println("不存在這樣的x的值");
		}
		
		System.out.println("y:"+y);
		
		System.out.println("結束");
	}
}

3.3 if語句的練習

3.3.1 if語句練習之獲取兩個整數的較大值

import java.util.Scanner;

/*
 * 需求:鍵盤錄入兩個資料,獲取這兩個資料的較大值
 * 
 * 分析:
 * 		A:看到了鍵盤錄入,我們就應該想到鍵盤錄入的三個步驟
 * 			導包,建立鍵盤錄入物件,獲取資料
 * 		B:獲取兩個資料的較大值,用if語句的格式2就可以實現判斷
 * 		C:把較大的結果輸出即可
 * 
 * 導包:
 * 		A:手動導包
 * 		B:點選滑鼠自動生成
 * 		C:快捷鍵
 * 			ctrl+shift+o
 */
public class IfTest {
	public static void main(String[] args) {
		//建立鍵盤錄入物件
		Scanner sc = new Scanner(System.in);
		
		//給出提示
		System.out.println("請輸入第一個整數:");
		int a = sc.nextInt();
		
		System.out.println("請輸入第二個整數:");
		int b = sc.nextInt();
		
		//if格式2實現判斷
		/*
		if(a > b) {
			System.out.println("較大的值是:"+a);
		}else {
			System.out.println("較大的值是:"+b);
		}
		*/
		
		//我們獲取到較大的值未必是輸出,可能還會進行其他的操作,所以我們要改進程式碼
		//定義一個變數用於儲存較大的值
		int max;
		
		if(a > b) {
			max = a;
		}else {
			max = b;
		}
		
		//我可以做
		//max += 10;
		
		System.out.println("較大的值是:"+max);
	}
}

3.4 switch語句的格式和執行流程概述

3.4.1 格式解釋

3.4.1格式解釋:

switch(表示式) {
  case 值1:
        語句體1;
  		break;
  case 值2:
  		語句體2;
  		break;
  case 值3:
  		語句體3;
  		break;
  ...
  default:
  		語句體n+1;
  		break;
}

switch表示這是switch語句

表示式的取值:byte,short,int,char

JDK5以後可以是列舉
JDK7以後可以是String

case後面跟的是要和表示式進行比較的值

語句體部分可以是一條或多條語句
break表示中斷,結束的意思,可以結束switch語句

default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。

3.4.2 執行流程

首先計算出表示式的值

其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。

最後,如果所有的case都和表示式的值不匹配,就會執行default語句體部分,然後程式結束掉。

3.5 switch語句的練習

switch語句的案例根據數字輸出對應星期

import java.util.Scanner;

/*
 * switch語句格式:
 * 		switch(表示式) {
 * 			case 值1:
 * 				語句體1;
 * 				break;
 * 			case 值2:
 * 				語句體2;
 * 				break;
 * 			case 值3:
 * 				語句體3;
 * 				break;
 * 			...
 * 			default:
 * 				語句體n+1;
 * 				break;
 * 		}
 * 
 * 格式解釋:
 * 		表示式:byte,short,int,char
 * 			JDK5以後可以是列舉,JDK7以後可以是字串
 * 		case後面的值:是用來和表示式的值進行匹配的
 * 		break:表示中斷的意思
 * 		default:所有的值都和表示式不匹配,就執行default對應的內容
 * 
 * 執行流程:
 * 		A:計算表示式的值
 * 		B:拿著這個值依次和case後面的值進行比對,一旦有匹配的,就執行對應的語句,在執行的過程中,遇到break就結束。
 * 		C:如果所有的case都不匹配,就執行語句體n+1
 * 
 * 案例:
 * 		根據鍵盤錄入的資料1-7,輸出對應的星期一到星期日
 * 
 * 快捷鍵:對程式碼進行格式化
 * 		ctrl+shift+f
 */
public class SwitchDemo {
	public static void main(String[] args) {
		// 建立鍵盤錄入資料
		Scanner sc = new Scanner(System.in);

		// 給出提示
		System.out.println("請輸入一個整數(1-7):");
		int weekDay = sc.nextInt();

		// 用switch語句實現判斷
		switch (weekDay) {
		case 1:
			System.out.println("星期一");
			break;
		case 2:
			System.out.println("星期二");
			break;
		case 3:
			System.out.println("星期三");
			break;
		case 4:
			System.out.println("星期四");
			break;
		case 5:
			System.out.println("星期五");
			break;
		case 6:
			System.out.println("星期六");
			break;
		case 7:
			System.out.println("星期日");
			break;
		default:
			System.out.println("你輸入的資料有誤");
			break;
		}
	}
}