零基礎學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 鍵盤輸入 資料概述
我們目前在寫程式的時候,資料值都是固定的,但是實際開發中,資料值肯定是變化的,所以,把資料改進為鍵盤錄入,提高程式的靈活性。
鍵盤錄入資料的步驟:
-
導包(位置放到class定義的上面)
import java.util.Scanner;
-
建立物件
Scanner sc = new Scanner(System.in);
-
接收資料
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章 選擇流程控制語句
在一個程式執行的過程中,各條語句的執行順序對程式的結果是有直接影響的。也就是說程式的流程對執行結果有直接的影響。所以,我們必須清楚每條語句的執行流程。而且,很多時候我們要通過控制語句的執行順序來實現我們要完成的功能。
-
流程控制語句分類
- 順序結構
- 選擇結構
- 迴圈結構
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;
}
}
}