课前回顾:1.变量的注意事项:a.在同一个作用域中不能定义相同名字的变量b.变量不初始化不能直接使用c.不同的作用域中的变量不随意互相访问:小作用域,能直接访问大作用域中的变量大作用域,不能直接访问小作用域中的变量2.标识符(自己取的名字)硬性规定:名字中可以包含26个字母,数字,$,_ 但是不能以数字开头名字不能和关键字重名软性建议:给类取名时,要遵循大驼峰式(每个单词的首字母大写)给方法和变量取名时,要遵循小驼峰式(从第二个单词开始往后首字母大写)见名知意3.数据类型转换a.按照取值范围从小到大排列byte short char-int-long-float-doubleb.自动类型转换将取值范围小的数据类型赋值给取值范围大的数据类型->小的自动提升为大类型c.强转将取值范围大的数据类型赋值给取值范围小的数据类型->报错,需要强转取值范围小的数据类型 变量名 = (取值范围小的数据类型)取值范围大的数据类型d.强转注意事项:不要随意使用强转->出现精度损失,数据溢出的现象byte,short,如果等号右边是常量,没有超出范围,不用强转(jvm自动转了)如果等号右边有变量参与,会自动提升为int型,手动强转char,参与运算的话也会被提升为int,如果char一旦提升为int了,会去ascii码表中查询字符对应的int值如果字符没有再ascii码表中,找unicode码表(万国码)4.运算符:算数运算符: + - * / %(余数)+:如果遇到字符串,就不再是运算符了,就变成了拼接符号,直接往后拼++ --单独使用:都是先运算混合使用:符号在前,先运算,再使用运算后的值符号在后,先使用原值,使用完毕之后,自身再计算赋值运算符: = += -= *= /= %=在复合赋值运算符中,byte,short,不用手动强转(jvm自动转了)比较运算符: == > < >= <= != -> boolean型,作为判断条件使用逻辑运算符: &&(有假则假) ||(有真则真) !(取反) ^(结果相同为false,不同为true) & |&& || 有短路效果三元运算符:格式:boolean表达式?表达式1:表达式2执行流程:先走boolean,如果是true,走?后面的表达式1,否则走:后面的表达式2位运算符:& | ^ ~ >> << >>>今日重点:idea的使用Scanner键盘录入switch使用if语句的使用for循环,while循环的使用死循环的使用嵌套循环的使用
第一章.IDEA的使用
1.idea的介绍
1.概述:开发工具 是java写的 所有需要jdk的环境支持2.特点:好用自动保存收费自动编译有快捷键3.作用:加速我们的开发4.其他的开发工具:eclipse(免费) myeclipse(收费)
2.idea的目录结构
![day03.[流程控制] - 图1](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw34ezee9j60jq0hwmx702.jpg#id=ZEOfk&originHeight=644&originWidth=710&originalType=binary&status=done&style=none)
3.如何去创建一个Project
![day03.[流程控制] - 图2](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw351rzgbj60x00g1whi02.jpg#id=Bv3iP&originHeight=577&originWidth=1188&originalType=binary&status=done&style=none)
3.1再次创建一个新的Project
![day03.[流程控制] - 图3](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw36xy2c6j60ry0f8gmn02.jpg#id=p3dlS&originHeight=548&originWidth=1006&originalType=binary&status=done&style=none)
或者:
![day03.[流程控制] - 图4](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw37h5r1yj60mb0dq0tg02.jpg#id=aBS47&originHeight=494&originWidth=803&originalType=binary&status=done&style=none)
4.关闭Project
file->close project
5.打开project
file->close project->open
6.创建module
![day03.[流程控制] - 图5](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3806hndj60ou09p74q02.jpg#id=ieGBp&originHeight=349&originWidth=894&originalType=binary&status=done&style=none)
6.1创建新的module
![day03.[流程控制] - 图6](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw38u589bj60kp060aao02.jpg#id=AuPuz&originHeight=216&originWidth=745&originalType=binary&status=done&style=none)
或者
![day03.[流程控制] - 图7](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw39xmnq3j60fx04n3yo02.jpg#id=uYwkf&originHeight=167&originWidth=573&originalType=binary&status=done&style=none)
或者
![day03.[流程控制] - 图8](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3aa222yj60et01ot8k02.jpg#id=jacj2&originHeight=60&originWidth=533&originalType=binary&status=done&style=none)
6.2打开和关闭module
关闭:
![day03.[流程控制] - 图9](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3bqb8m1j60cq0a2mxn02.jpg#id=xo3kg&originHeight=362&originWidth=458&originalType=binary&status=done&style=none)
打开:
![day03.[流程控制] - 图10](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3c58clrj60n0072dgq02.jpg#id=zLLio&originHeight=254&originWidth=828&originalType=binary&status=done&style=none)
7.创建以及删除package
7.1创建
![day03.[流程控制] - 图11](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3cpoq3ij60j5048aae02.jpg#id=Sn8m6&originHeight=152&originWidth=689&originalType=binary&status=done&style=none)
7.2 package的删除
对着包->右键->delete
7.3 package取名字规范
1.不要有中文2.不要以数字开头3.给包取名时一般都是公司域名倒着写,而且都是小写www.atguigu.com那么我们去package包名应该写成:com.atguigu.名字
8.创建类
![day03.[流程控制] - 图12](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3dejk4bj60if01m3yf02.jpg#id=M5X9g&originHeight=58&originWidth=663&originalType=binary&status=done&style=none)
psvm—>生成main方法
sout->生成输出语句
9.基本设置
9.1设置字体
file->settings
![day03.[流程控制] - 图13](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3dth1icj60pq0cq0tn02.jpg#id=E5847&originHeight=458&originWidth=926&originalType=binary&status=done&style=none)
9.2设置提示的快捷键
file->settings
![day03.[流程控制] - 图14](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3egtuq8j60io0fbwf502.jpg#id=Qjnw7&originHeight=551&originWidth=672&originalType=binary&status=done&style=none)
10.快捷键
| 快捷键 | 功能 |
|---|---|
| ``Alt+Enter | 导入包,自动修正代码(重中之重) |
| ``Ctrl+Y | 删除光标所在行 |
| ``Ctrl+D | 复制光标所在行的内容,插入光标位置下面 |
| ``Ctrl+Alt+L | 格式化代码 |
| ``Ctrl+/ | 单行注释 |
| ``Ctrl+Shift+/ | 选中代码注释,多行注释,再按取消注释 |
| ``Alt+Shift+上下箭头 | 移动当前代码行 |
11.出现的问题
1.创建project时,要选择empty project2.在运行代码时会出现"找不到对应的发行源",证明本地jdk版本和idea中的project level不匹配所以要匹配版本file->project Structure->点击project->引入本地jdk->project level选择对应的版本3.没有out路径的问题out路径是专门存放idea自动编译生成的.class文件的所以需要指明out路径
第二章.键盘录入_Scanner
1.概述:Scanner是Java自己创建的类2.作用:通过键盘录入的形式,将数据放到程序中参与运行3.使用:a.导包:找到这个包下要使用的类 -> import 包名.类名->import java.util.Scanner;b.创建对象:目的为了能够调用Scanner中的方法,实现键盘了录入Scanner 名字 = new Scanner(System.in)c.调用方法,真正的实现键盘录入功能名字.方法名()nextInt()-->键盘录入int型的整数nextDouble()-->录入小数next()->录入字符串
public class Demo01Scanner {public static void main(String[] args) {//创建对象Scanner scanner = new Scanner(System.in);System.out.println("请你输入:");int data1 = scanner.nextInt();System.out.println(data1+1);System.out.println("================");//录入一个字符串String data2 = scanner.next();System.out.println(data2);}}
需求:通过键盘录入的形式输入两个整数,让整数相加,输出结果步骤:1.创建Scanner对象2.调用两次nextInt()方法,键盘录入两个整数3.让两个整数相加
public class Demo02ScannerTest {public static void main(String[] args) {//1.创建Scanner对象Scanner scanner = new Scanner(System.in);//2.调用两次nextInt()方法,键盘录入两个整数System.out.println("请您输入第一个整数:");int data1 = scanner.nextInt();System.out.println("请您输入第二个整数:");int data2 = scanner.nextInt();//3.让两个整数相加int sum = data1+data2;System.out.println("两个整数的和为:"+sum);}}
//操作Scanner是出现的问题:实际录入的数据类型和我们想要的类型不一致
![day03.[流程控制] - 图15](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3fjmmndj60ui0703za02.jpg#id=c8fkA&originHeight=252&originWidth=1098&originalType=binary&status=done&style=none)
next()->键盘录入字符串->遇到空格就结束输入
nextLine()->键盘录入字符串->遇到回车才结束输入
public class Demo03Scanner {public static void main(String[] args) {Scanner sc = new Scanner(System.in);/*如果输入的是abc haha,那么从空格开始next()就输入结束了那么从空格开始其实给了nextLine了*/String data = sc.next();String data1 = sc.nextLine();System.out.println(data);System.out.println(data1);}}
第三章.switch(选择语句)
1.switch基本使用
1.格式:switch(表达式){case 目标值1:执行语句1;break;case 目标值2:执行语句2;break;case 目标值3:执行语句3;break;...default:执行语句n;break}2.注意:switch后面的表达式一般写变量case后面的目标值一般写常量3.执行流程:用switch后面的表达式接收的值和下面的case后面的目标值做匹配匹配上哪个case后面的目标值,就执行哪个case对应的执行语句走break(结束switch语句)4.注意:a.break的作用为:结束switch语句b.switch语句中可以填写以下类型数据:byte short int char 枚举类型(jdk5是新增),String类型(jdk7新增)
public class Test01Switch {public static void main(String[] args) {int i = 3;switch (i){case 1:System.out.println("这是case1");break;case 2:System.out.println("这是case2");break;case 3:System.out.println("这是case3");break;//结束switchcase 4:System.out.println("这是case4");break;default:System.out.println("这是default");break;}}}
public class Test02Switch {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请您输入一个月份:");int month = sc.nextInt();switch (month){case 12:System.out.println("冬天");break;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;case 8:System.out.println("夏天");break;case 9:System.out.println("秋天");break;case 10:System.out.println("秋天");break;case 11:System.out.println("秋天");break;default:System.out.println("您输入有误!");break;}}}
2.case的穿透性
1.什么时候出现case的穿透性:case下面没有break2.没有break,就一直往下穿透执行,直到遇到break或者switch代码结束
public class Test04Switch {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请您输入一个月份:");int month = sc.nextInt();switch (month){case 12:case 1:case 2:System.out.println("冬天");break;case 3:case 4:case 5:System.out.println("春天");break;case 6:case 7:case 8:System.out.println("夏天");break;case 9:case 10:case 11:System.out.println("秋天");break;default:System.out.println("您输入有误!");break;}}}
第四章.分支语句
1.if的第一种格式
1.格式:if(boolean表达式){执行语句}2.执行流程:走if后面的boolean表达式,如果是true,执行if后面大括号中的执行语句
public class Demo01If {public static void main(String[] args) {int i = 10;int j = 20;if (i==j){System.out.println("i和j相等");}System.out.println("我要执行了");}}
1.1练习
案例:从键盘输入年份,请输出该年的2月份的总天数。闰年2月份29天,平年28天。闰年:(1)能被4整除,不能被100整除(2)能被400整除步骤:1.创建Scanner对象,调用nextInt()方法输入一个年份 ->year2.利用if判断条件为:year%4==0 && year%100!=0 || year%400==03.判断条件如果是true输出闰年2月有29天
public class Demo02IfTest {public static void main(String[] args) {//1.创建Scanner对象,调用nextInt()方法输入一个年份 ->yearScanner sc = new Scanner(System.in);System.out.println("请您输入一个年份:");int year = sc.nextInt();/* 2.利用if判断条件为:year%4==0 && year%100!=0 || year%400==0*/if ((year%4==0 && year%100!=0) || year%400==0){/*3.判断条件如果是true输出闰年2月有29天*/System.out.println("闰年2月有29天");}}}
2.if的第二种格式
1.格式:if(boolean表达式){执行语句1;}else{执行语句2;}2.执行流程:a.走if后面的boolean表达式b.如果是true,走if后面大括号中的执行语句1c.否则,走else后面的执行语句23.使用环境:2种情况判断
public class Test01 {public static void main(String[] args) {int i = 10;int j = 20;if (i==j){System.out.println("i和j相等");}else{System.out.println("i和j不相等");}}}
2.1 练习
任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数步骤:1.创建Scanner,调用nextInt()键盘录入一个整数 number2.判断number%2==0,如果余数为0,证明是偶数,否则为奇数
public class Test02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int data = sc.nextInt();if (data%2==0){System.out.println("data为偶数");}else{System.out.println("data为奇数");}}}
2.2练习
需求.利用if else 求出两个数的较大值
public class Test03 {public static void main(String[] args) {int i = 10;int j = 20;if (i>j){System.out.println(i);}else {System.out.println(j);}}}
2.3练习
public class Test06 {public static void main(String[] args) {boolean num1 = false;boolean num2 = true;int i = 1;if (num1 = num2){//相当直接写了一个truei++;System.out.println(i);}if (false){//相当于直接写了一个false--i;System.out.println(i);}}}
3.if的第三种格式
1.格式:if(boolean表达式){执行语句1;}else if(boolean表达式){执行语句2;}else if(boolean表达式){执行语句3;}...else{执行语句n;}2.执行流程:a.先走if的boolean表达式,如果是true.走if的执行语句1b.如果是false,走下面的else if,接着判断,如果是true,走执行语句2c.如果是false,接着走下面的else ifd.如果以上所有的判断都不成立,就走else对应的执行语句n3.使用场景:2种情况以上的判断
public class Test01 {public static void main(String[] args) {int i = 10;int j = 10;if (i>j){System.out.println("i大于j");}else if(i<j){System.out.println("i小于j");}else{System.out.println("i等于j");}}}
3.1.练习
需求:键盘录入一个星期数(1,2,...7),输出对应的星期一,星期二,...星期日输入 1 输出 星期一输入 2 输出 星期二输入 3 输出 星期三输入 4 输出 星期四输入 5 输出 星期五输入 6 输出 星期六输入 7 输出 星期日输入 其它数字 输出 数字有误步骤:1.创建Scanner对象,调用nextInt()录入一个整数 week2.如果输入的是1,输出星期一,以此类推
public class Test02 {public static void main(String[] args) {//创建Scanner对象Scanner sc = new Scanner(System.in);System.out.println("请您输入一个星期数:");int week = sc.nextInt();/* if (week==1){System.out.println("周一");}else if(week==2){System.out.println("周二");}else if(week==3){System.out.println("周三");}else if(week==4){System.out.println("周四");}else if(week==5){System.out.println("周五");}else if(week==6){System.out.println("周六");}else if(week==7){System.out.println("周日");}else{System.out.println("输入有误");}*/if (week>7 || week<1){System.out.println("输入有误");}else{if (week==1){System.out.println("周一");}else if(week==2){System.out.println("周二");}else if(week==3){System.out.println("周三");}else if(week==4){System.out.println("周四");}else if(week==5){System.out.println("周五");}else if(week==6){System.out.println("周六");}else if(week==7){System.out.println("周日");}}}}
3.2练习
- 需求: 小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。- 奖励规则:95~100 山地自行车一辆90~94 游乐场玩一次80~89 变形金刚玩具一个80以下 胖揍一顿
public class Test03 {public static void main(String[] args) {//创建Scanner对象Scanner sc = new Scanner(System.in);int score = sc.nextInt();if (score>=95 && score<=100){System.out.println("山地自行车一辆");}else if(score>=90 && score<=94){System.out.println("游乐场玩一次");}else if(score>=80 && score<=89){System.out.println("变形金刚玩具一个");}else if (score>=0 && score<80){System.out.println("胖揍一顿");}else{System.out.println("分数有误");}}}
第五章.循环语句_for
1.for循环
1.格式:for(初始化变量;比较;步进表达式){循环语句}2.执行流程:a.初始化变量b.比较,如果是true,进入for循环,执行循环语句c.执行步进表达式(初始化变量的值变化)d.再次比较,如果还是true,继续进入到for循环中,执行循环语句e.再步进表达式,再比较,直到比较失败,返回false,for循环结束
public class Test01 {public static void main(String[] args) {for (int i = 0;i<3;i++){System.out.println("我爱大数据");}}}
![day03.[流程控制] - 图16](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3ge04kpj60wq0c0t9a02.jpg#id=bTD8f&originHeight=432&originWidth=1178&originalType=binary&status=done&style=none)
1.1练习
for循环练习1:求1-3之间的数据和,并把求和结果在控制台输出1+2+3步骤:1.定义一个变量sum,表示两个数相加的和2.利用for循环将1-3的数表示出来3.循环体中进行两两相加,将结果赋值给sum
public class Test02 {public static void main(String[] args) {//1.定义一个变量sum,表示两个数相加的和int sum = 0;//2.利用for循环将1-3的数表示出来for (int i = 1;i<=3;i++){sum+=i;//sum = sum+i;}//3.循环体中进行两两相加,将结果赋值给sumSystem.out.println(sum);}}
![day03.[流程控制] - 图17](http://ww1.sinaimg.cn/large/006bYs0Bgy1gqw3i8ns19j611r0fqmy602.jpg#id=FzyYa&originHeight=566&originWidth=1359&originalType=binary&status=done&style=none)
1.2练习
需求:求出1-100的偶数和步骤:1.定义一个变量,来接收两个数的和2.利用for循环将1-100表示出来3.判断,如果%2==0,证明是偶数,然后相加4.输出结果
public class Test03 {public static void main(String[] args) {//1.定义一个变量,来接收两个数的和int sum = 0;//2.利用for循环将1-100表示出来for (int i = 1; i <= 100; i++) {//3.判断,如果%2==0,证明是偶数,然后相加if (i%2==0){sum+=i;}}//4.输出结果System.out.println("sum:"+sum);}}
1.3练习
需求:统计一下1-100之间的偶数个数步骤:1.定义一个变量,count 用来统计2.利用for循环将1-100的数表示出来3.在循环体中判断,如果是偶数,count++4.输出count
public class Test04 {public static void main(String[] args) {// 1.定义一个变量,count 用来统计int count = 0;// 2.利用for循环将1-100的数表示出来for (int i = 1;i<=100;i++){// 3.在循环体中判断,如果是偶数,count++if (i%2==0){count++;}}// 4.输出countSystem.out.println(count);}}
快捷键: 次数.fori
第六章.循环语句_while
1.while循环
1.1while循环的简单使用
1.格式:初始化变量while(比较){循环语句步进表达式}2.执行流程:a.初始化变量b.比较,如果是true,进入循环体执行循环语句,走步进表达式c.继续比较,如果还是true,继续执行循环语句,走步进表达式d.继续比较,知道比较为false,while循环结束
public class Test01 {public static void main(String[] args) {int i = 0;while(i<5){System.out.println("我爱bigdata");i++;}}}
public class Test01 {public static void main(String[] args) {int i = 1;int sum = 0;while(i<=100){if (i%2==0){sum+=i;}i++;}System.out.println(sum);}}
1.2while练习
需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?27步骤:1.定义一个变量,表示山峰的高度:shanFeng2.定义一个变量,表示纸的厚度:paper3.循环比较,如果paper<shanFeng就开始折.paper*2count++4.输出count
public class Test02 {public static void main(String[] args) {//1.定义一个变量,表示山峰的高度:shanFengint shanFeng = 8844430;//2.定义一个变量,表示纸的厚度:paperdouble paper = 0.1;//3.定义一个count,来统计折纸的次数int count = 0;/* 4.循环比较,如果paper<shanFeng就开始折.paper*2count++*/while(paper<shanFeng){paper = paper*2;count++;System.out.println(paper);}//5.输出countSystem.out.println(count);}}
2.do…while循环
1.格式:初始化变量do{循环语句步进表达式}while(比较);2.执行流程:a.初始化变量b.执行循环语句,走步进表达式c.比较,如果是true,执行循环语句,再步进d.再比较,知道比较为false,do...while结束3.特点:至少执行一次
public class Test03 {public static void main(String[] args) {int i = 0;do {System.out.println("我爱大数据");i++;}while(i<10);}}
温馨小提示:快速生成for循环-> 次数.fori
xmind快捷键:
| 生成子主题 | tab |
|---|---|
| 生成兄弟主题 | 回车 |
| 编辑主题 | F2 |
| 添加备注 | F4 |
| 删除主题 | delete |
