# 【IDEA、運算符、數據輸入】
##### 今日復習指南
~~~
1.IDEA操作(0.5個小時內完成)
? (1)創建項目
? (2)創建模塊
? (3)創建包
? (4)創建類
2.運算符(0.5個小時內完成)
? (1)關系運算符:Demo01GuanXi.java
(2)邏輯運算符:Demo03DuanLu.java 短路&&和||
(3)三元運算符:Demo03SanYuanHeShang.java 三個和尚的最大身高
3.鍵盤錄入(1個小時內完成: 多練幾遍)
? ?Demo01ScannerSum.java 獲取鍵盤錄入的兩個int數字求和
? ?Demo02ScannerHeShang.java 獲取鍵盤錄入的三個int數字求最大值
?
~~~
##### 今天內容介紹
~~~
IDEA【重點:操作】
運算符【重點:理解】
數據輸入【重點:格式需要記憶】
練習【重點:操作】
~~~
### 第一章 開發工具IntelliJ IDEA
##### 1.1 IDEA開發工具的安裝
##### 1.2 IDEA的首次驅動
~~~
查看文件夾 IDEA操作文檔\01_首次驅動項目和模塊的創建.docx文件
~~~

##### 1.3 IDEA的包和類的創建
~~~
查看文件夾 IDEA操作文檔\02_包和類的創建.docx
~~~
##### 1.4 IDEA字體的設置和快捷鍵的修改
~~~
查看文件夾 IDEA操作文檔\03_字體設置及快捷鍵修改.docx
~~~

##### 修改字體

##### ctrl+滾輪放大/縮小字體

##### 1.5 IDEA工程目錄的介紹

##### 1.6 IDEA快捷鍵的使用
~~~
1.psvm + 回車: main方法
2.sout + 回車: 輸出語句
3.ctrl + d: 復制當前行
4.ctrl + alt + L: 格式化代碼
5.alt + shift + ↑: 向上移動代碼
6.alt + shift + ↓: 向下移動代碼
7.ctrl + /: 單行注釋
8.ctrl + shift + /: 多行注釋
9.alt + 回車: 代碼修正
10.alt + /: 自動提示
11.ctrl + Y: 刪除當前行
? ?
?
~~~
##### 1.7 IDEA創建模塊和刪除模塊
~~~
查看文件夾IDEA操作文檔\04_非首次模塊的創建導入刪除.docx
~~~
##### 1.8 IDEA導入項目和關閉項目
~~~
查看文件夾IDEA操作文檔\05_非首次項目的創建導入打開.docx
~~~
### 第二章 運算符
##### 2.1 關系運算符
~~~
1.作用:用來比較兩個數據之間的大小關系
2.特點:
不管關系表達式多么簡單或者多么復雜,最終的結果只有兩個,要么是true,要么是false
3.分類:
== a==b,判斷a和b的值是否相等,成立為true,不成立為false
!= a!=b,判斷a和b的值是否不相等,成立為true,不成立為false
> a>b,判斷a是否大于b,成立為true,不成立為false
>= a>=b,判斷a是否大于或者等于b,成立為true,不成立為false
< a<b,判斷a是否小于b,成立為true,不成立為false
<= a<=b,判斷a是否小于或者等于b,成立為true,不成立為false
4.注意:
(1)=: 表示的是賦值 賦值運算符
(2)==: 表示的是判斷是否相同 關系運算符
~~~
~~~
public class Demo01GuanXi {
public static void main(String[] args) {
int a = 10, b = 20;
//boolean result = a>b;//10 > 20 : false
//System.out.println(result);//false
System.out.println(a > b); //10 > 20 : false
System.out.println(a >= b); //10 >= 20: false
System.out.println(a < b); //10 < 20 : true
System.out.println(a <= b); //10 <= 20 : true
System.out.println(a != b); //10 != 20 : true
System.out.println(a == b); //10 == 20 : false
System.out.println(a = b); //把變量b的值賦值給a,再打印a的值: 20
}
}
~~~
##### 2.2 邏輯運算符
~~~
舉例: 咱們班哥們在黑馬學習java,順利畢業,高薪就業,找到了對象,談了好長時間,需要談婚論嫁
到你對象家和準岳母談判:
準岳母:
小伙子呀,你呢? 必須得有房(條件1: true/false),而且呢,
你呀,還得有車(條件2: true/false),然后你們的事情才能定下來
注意: 像上面的兩個條件,要求必須都成立,最終結果才成立 需要使用邏輯&連接兩個條件
準岳母:
小伙子呀,你呢? 要么有房(條件1: true/false),要么有車(條件2: true/false),
然后你們的事情才能定下來
注意: 像上面的兩個條件,要求只要有一個成立,最終結果就成立 需要使用邏輯|連接兩個條件
1.作用:
用來連接布爾表達式的,最終的結果一定要么是true,要么是false
2.分類:
(1)&(shift+7): 邏輯與,并且的意思,只有所有條件都成立(true),最終的結果才成立(true)
特點: 有false,則false
只要有一個條件是false,最終就是false
只有所有條件是true,最終才是true
(2)|(shift+\): 邏輯或,或者的意思,只要有一個條件成立(true),最終的結果就是成立的(true)
特點: 有true,則true
只要有一個條件是true,最終就是true
只有所有條件是false,最終才是false
(3)^(shift+6): 邏輯異或,相同為false,不同為true ----基本不用,了解即可
(4)!(shift+1): 邏輯取反
!true 就是 false,!false 就是true
~~~
~~~
public class Demo02LuoJi {
public static void main(String[] args) {
int a = 10, b = 20, c = 30;
System.out.println(a>b & a>c);//10 > 20 & 10 > 30 ==> false & false ==> false
System.out.println(a>b & a<c);//10 > 20 & 10 < 30 ==> false & true ==> false
System.out.println(a<b & a>c);//10 < 20 & 10 > 30 ==> true & false ==> false
System.out.println(a<b & a<c);//10 < 20 & 10 < 30 ==> true & true ==> true
System.out.println("---------------------------");
System.out.println(a>b | a>c);//10 > 20 | 10 > 30 ==> false | false ==> false
System.out.println(a>b | a<c);//10 > 20 | 10 < 30 ==> false | true ==> true
System.out.println(a<b | a>c);//10 < 20 | 10 > 30 ==> true | false ==> true
System.out.println(a<b | a<c);//10 < 20 | 10 < 30 ==> true | true ==> true
System.out.println("---------------------------");
System.out.println(a>b ^ a>c);//10 > 20 ^ 10 > 30 ==> false ^ false ==> false
System.out.println(a>b ^ a<c);//10 > 20 ^ 10 < 30 ==> false ^ true ==> true
System.out.println(a<b ^ a>c);//10 < 20 ^ 10 > 30 ==> true ^ false ==> true
System.out.println(a<b ^ a<c);//10 < 20 ^ 10 < 30 ==> true ^ true ==> false
System.out.println("---------------------------");
System.out.println(!true);//false
System.out.println(!false);//true
}
}
~~~
##### 2.3 邏輯運算符的短路效果
~~~
短路的邏輯運算符
1.基本使用
(1)短路邏輯與&&: 左側為false,右側不計算
(2)短路邏輯與||: 左側為true,右側不計算
2.特點:
(1)&&和&最終的結果是一樣的,但是&&具有短路效果可以提高效率
(2)||和|最終的結果是一樣的,但是||具有短路效果可以提高效率
~~~
~~~
public class Demo03DuanLu {
public static void main(String[] args) {
int a = 2;
/*
表達式(3<2) && (++a>2): 從左向右計算
先計算(3<2): false
因為后面使用的是&&,而且&&的左側已經是false了,已經確定了最終的結果就是false
所以&&的右側不再進行計算
*/
System.out.println((3<2) && (++a>2));//false
System.out.println(a);//2
int b = 2;
/*
表達式(3<2) & (++b>2): 從左向右計算
先計算(3<2): false
因為后面使用的是&,不管&前面是true還是false,都計算&右邊的表達式(++b>2)
導致b的值增加了1
*/
System.out.println((3<2) & (++b>2));//false
System.out.println(b);//3
System.out.println("--------------");
int c = 2;
/*
表達式(3>2) || (++c>2): 從左向右計算
先計算(3>2): true
因為后面使用的是||,而且||的左側已經是true了,已經確定了最終的結果就是true
所以||的右側不再進行計算
*/
System.out.println((3>2) || (++c>2));//true
System.out.println(c);//2
int d = 2;
/*
表達式(3>2) | (++d>2): 從左向右計算
先計算(3>2): true
因為后面使用的是|,不管|前面是true還是false,都計算|右邊的表達式(++d>2)
導致d的值增加了1
*/
System.out.println((3>2) | (++d>2));//true
System.out.println(d);//3
}
}
~~~
##### 2.4 三元運算符格式
~~~
1.格式:
數據類型 變量名稱 = 布爾表達式1 ? 表達式2 : 表達式3;
注意:
布爾表達式1: 這個式子不管多么復雜,也不管多么簡單,結果必須是布爾(boolean)類型(true/false)
2.執行流程:
(1)計算布爾表達式1的結果,看是true還是false
(2)如果布爾表達式1的結果是true,就把表達式2的最終結果賦值給左側的變量
(3)如果布爾表達式1的結果是false,就把表達式3的最終結果賦值給左側的變量
~~~
##### 執行流程圖解:

##### 2.5 三元運算符的練習之兩只老虎(最大值)
~~~
需求:
動物園里有兩只老虎,已知兩只老虎的體重分別為180kg、200kg,
請用程序實現計算兩只老虎的體重的最大值。
實現步驟:
1.定義2個int變量w1和w2,并按照題目需求進行初始化,分別表示兩只老虎的體重
2.使用三元運算符就是w1和w2的最大值,保存到int變量max中
3.打印max
~~~
##### 圖解分析

~~~
public class Demo03SanYuanTiger {
public static void main(String[] args) {
//1.定義2個int變量w1和w2,并按照題目需求進行初始化,分別表示兩只老虎的體重
int w1 = 180, w2 = 200;
//2.使用三元運算符就是w1和w2的最大值,保存到int變量max中
//200>180: true 200 180
int max = (w2>w1) ? w2 : w1;
//3.打印max
System.out.println("最大值: "+max);
}
}
~~~
##### 2.6 三元運算符的練習之兩只老虎(相等)
~~~
需求:
動物園里有兩只老虎,已知兩只老虎的體重分別為180kg、200kg,
請用程序實現判斷兩只老虎的體重是否相同。
實現步驟:
1.定義2個int變量w1和w2,并根據題目需求進行初始化,分別代表兩只老虎的體重
2.使用三元運算符計算w1和w2是否相同(==),把結果保存到boolean類型的變量result中
3.打印結果result
~~~
~~~
package com.itheima03;
/*
需求:
動物園里有兩只老虎,已知兩只老虎的體重分別為180kg、200kg,
請用程序實現判斷兩只老虎的體重是否相同。
實現步驟:
1.定義2個int變量w1和w2,并根據題目需求進行初始化,分別代表兩只老虎的體重
2.使用三元運算符計算w1和w2是否相同(==),把結果保存到boolean類型的變量result中
3.打印結果result
*/
public class Demo02SanYuanTiger {
public static void main(String[] args) {
//1.定義2個int變量w1和w2,并根據題目需求進行初始化,分別代表兩只老虎的體重
int w1 = 180, w2 = 200;
//2.使用三元運算符計算w1和w2是否相同(==),把結果保存到boolean類型的變量result中
boolean result = (w1 == w2) ? true : false;
//3.打印結果result
System.out.println("是否相同: "+result);
}
}
~~~
##### 2.7 三元運算符的練習之三個和尚
~~~
需求:
一座寺廟里住著三個和尚,已知他們的身高分別為150cm、210cm、165cm,
請用程序實現獲取這三個和尚的最高身高。
實現步驟:
1.定義3個int變量h1,h2,h3代表3個和尚的身高,并根據題目需求進行初始化
2.使用三元運算符計算出h1和h2的最大身高,保存到int變量temp中
3.再使用三元運算符計算出temp和h3的最大身高,保存到int變量max中
4.打印max的值
~~~
##### 圖解分析

~~~
package com.itheima03;
/*
需求:
一座寺廟里住著三個和尚,已知他們的身高分別為150cm、210cm、165cm,
請用程序實現獲取這三個和尚的最高身高。
實現步驟:
1.定義3個int變量h1,h2,h3代表3個和尚的身高,并根據題目需求進行初始化
2.使用三元運算符計算出h1和h2的最大身高,保存到int變量temp中
3.再使用三元運算符計算出temp和h3的最大身高,保存到int變量max中
4.打印max的值
*/
public class Demo03SanYuanHeShang {
public static void main(String[] args) {
//1.定義3個int變量h1,h2,h3代表3個和尚的身高,并根據題目需求進行初始化
int h1 = 150, h2 = 210, h3 = 165;
//2.使用三元運算符計算出h1和h2的最大身高,保存到int變量temp中
//150 > 210: false 把h2的值賦值給temp
int temp = (h1 > h2) ? h1 : h2;//temp: 210
//3.再使用三元運算符計算出temp和h3的最大身高,保存到int變量max中
//210 > 165: true 把temp的值賦值給max
int max = (temp > h3) ? temp : h3;//max: 210
//4.打印max的值
System.out.println("三個和尚的最大身高: "+max);
}
}
~~~
### 第三章 數據輸入(應用)
##### 3.1 鍵盤錄入的基本使用
~~~
數據輸出: 把程序的運行結果輸出到控制臺,從而顯示到屏幕上
數據輸入: 獲取鍵盤錄入的數據到程序中,從而在程序中對數據進行相關的運算
問題1:
像鍵盤錄入這種功能,其實程序員自己實現起來是非常麻煩的,而且還很常用,所以jdk的開發人員就幫助程序員,
實現了鍵盤錄入的這種功能,把鍵盤錄入的功能定義到一個類Scanner中,并且把這個類放入到了java.util包中
問題2:
如何使用jdk中定義好的存儲在java.util包中的鍵盤錄入Scanner類呢?
java中的數據類型,分為基本類型(四類八種)和引用類型,基本類型的使用我們已經學習過了
但是對于引用類型而言,使用有固定的三個步驟
java.util.Scanner類: 獲取鍵盤錄入的數據,是一個引用類型,使用也有固定的三個步驟:
1.導包(找到我們要使用的東西: 類)
格式:
import 包名.類名;
鍵盤錄入Scanner類如何導包: import java.util.Scanner;
2.創建對象
格式:
類名 對象名 = new 類名(...);
注意: 類名就是我們之前寫代碼時,class關鍵字后面的名字
創建鍵盤錄入Scanner類的對象:
Scanner sc = new Scanner(System.in);
注意: ()中的System.in目前是固定寫法
3.使用
sc.nextInt(): 用來獲取鍵盤錄入的整數數字
~~~
##### 鍵盤錄入的理解

##### 3.2 鍵盤錄入的練習
~~~
需求:
獲取鍵盤錄入的兩個整數(int類型)數字,在控制臺輸出求和的結果。
實現步驟:
1.導包: import java.util.Scanner
2.創建鍵盤錄入Scanner類的對象: Scanner sc = new Scanner(System.in);
3.獲取鍵盤錄入的2個int數字,分別保存到int變量a和b中
4.計算變量a和b的數據之和,保存到int變量sum中
5.打印sum的值
~~~
~~~
import java.util.Scanner;//導入鍵盤錄入Scanner類
public class Demo01ScannerSum {
public static void main(String[] args) {
//1.導包: import java.util.Scanner
//2.創建鍵盤錄入Scanner類的對象: Scanner sc = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
//3.獲取鍵盤錄入的2個int數字,分別保存到int變量a和b中
System.out.println("請輸入第一個整數數字: ");
//sc.nextInt(): 獲取到鍵盤錄入的整數數字,通過=賦值給int變量a
int a = sc.nextInt();
System.out.println("您輸入的第一個整數數字是: "+a);
System.out.println("請輸入第二個整數數字: ");
//sc.nextInt(): 獲取到鍵盤錄入的整數數字,通過=賦值給int變量b
int b = sc.nextInt();
System.out.println("您輸入的第二個整數數字是: "+b);
//4.計算變量a和b的數據之和,保存到int變量sum中
int sum = a + b;
//5.打印sum的值
System.out.println("和: "+sum);
}
}
~~~
##### 3.3 鍵盤錄入改寫三個和尚案例
~~~
需求:
一座寺廟里住著三個和尚,已知他們的身高分別為150cm、210cm、165cm,身高需要使用鍵盤錄入
請用程序實現獲取這三個和尚的最高身高。
實現步驟:
1.創建鍵盤錄入Scanner類的對象(先導包,后創建對象)
自動導包1: 直接寫字母Sc,會出現提示,選擇Scanner,回車 ------------建議-----------
自動導包2: 直接寫單詞Scanner,alt + 回車,選擇需要的Scanner,回車
2.獲取鍵盤錄入的3個整數數字(代表三個和尚的身高),分別保存到3個int變量h1,h2,h3中
3.使用三元運算符計算h1和h2的最大值,保存到int變量temp中
4.再使用三元運算符計算temp和h3的最大值,保存到int變量max中
5.打印max的值
~~~
~~~
public class Demo02ScannerHeShang {
public static void main(String[] args) {
//1.創建鍵盤錄入Scanner類的對象(先導包,后創建對象)
Scanner sc = new Scanner(System.in);
//2.獲取鍵盤錄入的3個整數數字(代表三個和尚的身高),分別保存到3個int變量h1,h2,h3中
System.out.println("請輸入第一個和尚的身高(整數數字): ");
int h1 = sc.nextInt();
System.out.println("請輸入第二個和尚的身高(整數數字): ");
int h2 = sc.nextInt();
System.out.println("請輸入第三個和尚的身高(整數數字): ");
int h3 = sc.nextInt();
System.out.println("您輸入的三個和尚的身高: "+h1+", "+h2+", "+h3);
//3.使用三元運算符計算h1和h2的最大值,保存到int變量temp中
int temp = (h1 > h2) ? h1 : h2;
//4.再使用三元運算符計算temp和h3的最大值,保存到int變量max中
int max = (temp > h3) ? temp : h3;
//5.打印max的值
System.out.println("以上三個和尚的最大身高: "+max);
}
}
~~~
## 總結
~~~
能夠知道&&和&的區別
&&和&: 計算結果相同
&&: 具有短路的效果,左側為false,右側不進行計算
&: 沒有短路效果,右側一定都需要計算
能夠使用三元運算符完成獲取兩個數中較大值
int a = 200, b = 100;
int max = (a>b) ? a : b;
sout(max);
能夠使用鍵盤錄入數據并完成兩個數據求和
//導包
import java.util.Scanner;
//創建
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int sum = a + b;
sout(sum);
能夠使用IDEA完成HelloWorld案例 ----必須會
能夠知道IDEA的項目結構
能夠使用IDEA完成模塊的導入
~~~