# 【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文件
~~~
![](https://img.kancloud.cn/06/6a/066aa434a75df51d2a7fe7cca80b2bc5_1335x512.png)
##### 1.3 IDEA的包和类的创建
~~~
查看文件夹 IDEA操作文档\02_包和类的创建.docx
~~~
##### 1.4 IDEA字体的设置和快捷键的修改
~~~
查看文件夹 IDEA操作文档\03_字体设置及快捷键修改.docx
~~~
![](https://img.kancloud.cn/5b/7e/5b7e99b9913f96b3c423165f5fe06964_942x321.png)
##### 修改字体
![](https://img.kancloud.cn/47/0d/470dc70e8a72c81ca22f0aa1d5a9119e_954x692.png)
##### ctrl+滚轮放大/缩小字体
![](https://img.kancloud.cn/c6/0a/c60a6515eeb071e773d9b866404de2a6_960x692.png)
##### 1.5 IDEA工程目录的介绍
![](https://img.kancloud.cn/32/34/32346fa26070206c0f2679e571e171f4_1339x418.png)
##### 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的最终结果赋值给左侧的变量
~~~
##### 执行流程图解:
![](https://img.kancloud.cn/3f/2f/3f2ffe781c72d629b9ee4c9339dce439_598x301.png)
##### 2.5 三元运算符的练习之两只老虎(最大值)
~~~
需求:
动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,
请用程序实现计算两只老虎的体重的最大值。
实现步骤:
1.定义2个int变量w1和w2,并按照题目需求进行初始化,分别表示两只老虎的体重
2.使用三元运算符就是w1和w2的最大值,保存到int变量max中
3.打印max
~~~
##### 图解分析
![](https://img.kancloud.cn/29/03/2903fca0f81a6486f7508fe53b210aa6_1199x505.png)
~~~
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的值
~~~
##### 图解分析
![](https://img.kancloud.cn/83/42/834207a7d2e9df2786a8ba7617542fa2_1110x524.png)
~~~
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(): 用来获取键盘录入的整数数字
~~~
##### 键盘录入的理解
![](https://img.kancloud.cn/6c/cc/6ccce06c31f254beb4a5423e80a2af97_1199x495.png)
##### 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完成模块的导入
~~~