课前回顾:
1.变量的注意事项:
a.在同一个作用域中不能定义相同名字的变量
b.变量不初始化不能直接使用
c.不同的作用域中的变量不随意互相访问:
小作用域,能直接访问大作用域中的变量
大作用域,不能直接访问小作用域中的变量
2.标识符(自己取的名字)
硬性规定:名字中可以包含26个字母,数字,$,_ 但是不能以数字开头
名字不能和关键字重名
软性建议:
给类取名时,要遵循大驼峰式(每个单词的首字母大写)
给方法和变量取名时,要遵循小驼峰式(从第二个单词开始往后首字母大写)
见名知意
3.数据类型转换
a.按照取值范围从小到大排列
byte short char-int-long-float-double
b.自动类型转换
将取值范围小的数据类型赋值给取值范围大的数据类型->小的自动提升为大类型
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的目录结构
3.如何去创建一个Project
3.1再次创建一个新的Project
或者:
4.关闭Project
file->close project
5.打开project
file->close project->open
6.创建module
6.1创建新的module
或者
或者
6.2打开和关闭module
关闭:
打开:
7.创建以及删除package
7.1创建
7.2 package的删除
对着包->右键->delete
7.3 package取名字规范
1.不要有中文
2.不要以数字开头
3.给包取名时一般都是公司域名倒着写,而且都是小写
www.atguigu.com
那么我们去package包名应该写成:com.atguigu.名字
8.创建类
psvm—>生成main方法
sout->生成输出语句
9.基本设置
9.1设置字体
file->settings
9.2设置提示的快捷键
file->settings
10.快捷键
快捷键 | 功能 |
---|---|
``Alt+Enter | 导入包,自动修正代码(重中之重) |
``Ctrl+Y | 删除光标所在行 |
``Ctrl+D | 复制光标所在行的内容,插入光标位置下面 |
``Ctrl+Alt+L | 格式化代码 |
``Ctrl+/ | 单行注释 |
``Ctrl+Shift+/ | 选中代码注释,多行注释,再按取消注释 |
``Alt+Shift+上下箭头 | 移动当前代码行 |
11.出现的问题
1.创建project时,要选择empty project
2.在运行代码时会出现"找不到对应的发行源",证明本地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是出现的问题:实际录入的数据类型和我们想要的类型不一致
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;//结束switch
case 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下面没有break
2.没有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()方法输入一个年份 ->year
2.利用if判断条件为:
year%4==0 && year%100!=0 || year%400==0
3.判断条件如果是true
输出闰年2月有29天
public class Demo02IfTest {
public static void main(String[] args) {
//1.创建Scanner对象,调用nextInt()方法输入一个年份 ->year
Scanner 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后面大括号中的执行语句1
c.否则,走else后面的执行语句2
3.使用环境:
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()键盘录入一个整数 number
2.判断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){//相当直接写了一个true
i++;
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的执行语句1
b.如果是false,走下面的else if,接着判断,如果是true,走执行语句2
c.如果是false,接着走下面的else if
d.如果以上所有的判断都不成立,就走else对应的执行语句n
3.使用场景:
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()录入一个整数 week
2.如果输入的是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("我爱大数据");
}
}
}
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.循环体中进行两两相加,将结果赋值给sum
System.out.println(sum);
}
}
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.输出count
System.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.定义一个变量,表示山峰的高度:shanFeng
2.定义一个变量,表示纸的厚度:paper
3.循环比较,如果paper<shanFeng
就开始折.paper*2
count++
4.输出count
public class Test02 {
public static void main(String[] args) {
//1.定义一个变量,表示山峰的高度:shanFeng
int shanFeng = 8844430;
//2.定义一个变量,表示纸的厚度:paper
double paper = 0.1;
//3.定义一个count,来统计折纸的次数
int count = 0;
/* 4.循环比较,如果paper<shanFeng
就开始折.paper*2
count++*/
while(paper<shanFeng){
paper = paper*2;
count++;
System.out.println(paper);
}
//5.输出count
System.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 |