1. 局部变量
概念:声明在方法内部的变量,必须先赋值再使用。
| 描述 | |
|---|---|
| 定义位置 | 必须定义在方法中 位置1234 不可以 |
| 作用范围 | 离当前变量最近的大括号以内 |
| 关于重名 | 在重合的作用范围内容,不能重名 |
| 存储位置 | 基本数据类型,全部存放在栈(stack)中 引用数据类型,名字存放在栈(stack)中,值存放在堆(heap)中 |
| 生命周期 | 随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡 |
package com.qfedu.test1;
/**
* 局部变量
* 概念:声明在方法内部的变量,必须先赋值再使用。
*
* 定义位置:必须定义在方法中 位置1234 不可以
* 作用范围:离当前变量最近的大括号以内
* 关于重名:在重合的作用范围内容,不能重名
*
* 存储位置:
* 基本数据类型,全部存放在栈(stack)中
* 引用数据类型,名字存放在栈(stack)中,值存放在堆(heap)中
* 生命周期:
* 随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡
* @author WHD
*
*/
// 位置1
public class Test1 {
// 位置2
public static void main(String[] args) {
int d;
// System.out.println(d); 变量d没有赋值 不能访问
int a = 10;
int b = 20;
if(a > b) {
System.out.println("a大于b条件成立");
// int a = 66;
int c = 66;
System.out.println(b);
}else {
// System.out.println(c); 这里不能访问c 因为c的作用范围 只在if中
System.out.println(a);
int c = 66;
}
}
// 位置3
}
// 位置4
2.变量的命名
字下美人数骆驼
字:字母
下:下划线
美:美元符号 $
人:人民币符号 ¥
数:数字
骆驼:驼峰命名
变量命名可以以字母,下划线,美元符号,人民币符号开头,可以包含数字,不能以数字开头,遵循驼峰命名法
studentNameAndAge
package com.qfedu.test1;
/**
* 变量的命名
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int a1 = 10;
int _a = 20;
int $c = 33;
int ¥d = 44;
// int 5d = 66; 不能以数字开头
String studentName = "赵四";
}
}
3. 循环
3.1 while循环
计数器初始化;
while ( 循环条件 ) {
计数器变化;}
while循环
- while 单词: 当 ……
- 所有的循环都必须的四个条件
- 1.计数器初始化
- 2.判断条件
- 3.循环体
- 4.计数器变化
循环操作
package com.qfedu.test2;
/**
* while循环
* while : 当 ……
*
* 所有的循环都必须的四个条件
* 1.计数器初始化
* 2.判断条件
* 3.循环体
* 4.计数器变化
*
* 需求:使用while循环实现100遍好好学习
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int i = 1;
while(i <= 10000) {
System.out.println("第"+ i +"遍好好学习");
i++;
}
System.out.println("程序结束~");
}
}
package com.qfedu.test2;
import java.util.Scanner;
/**
* 老师每天检查赵四的学习任务是否合格,如果不合格,
* 则继续进行。老师给赵四安排的每天的学习任务为:
* 上午阅读教材,学习理论部分,下午上机编程,掌握代码部分
* @author WHD
*
*/
public class Test3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入学习成绩是否合格?y/n");
String answer = input.next();
while(answer.equals("n")) {
System.out.println("上午阅读教材,学习理论部分");
System.out.println("下午上机编程,掌握代码部分");
System.out.println("请输入学习成绩是否合格?y/n");
answer = input.next();
}
System.out.println("恭喜你,完成学习任务~");
}
}
3.2 do-while循环
do-while:做……当
计数器初始化;
do {
循环操作
计数器变化;
} while ( 循环条件 );
while和do-while的区别?
while是先判断 后执行 条件不成立 一次都不执行
do-while 是先执行 后判断 不管条件是否成立 至少执行一次
package com.qfedu.test3;
import java.util.Scanner;
/**
* 经过几天的学习,老师给赵四一道测试题,
* 让他先上机编写程序完成,然后老师检查是否合格。
* 如果不合格,则继续编写……
*
* while和do-while的区别?
* while是先判断 后执行 条件不成立 一次都不执行
* do-while 是先执行 后判断 不管条件是否成立 至少执行一次
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String answer = "";
do {
System.out.println("上机编写测试代码");
System.out.println("请输入成绩是否合格?y/n");
answer = input.next();
}while(answer.equals("n"));
System.out.println("恭喜你完成任务!");
}
}
package com.qfedu.test3;
/**
* 使用do-while实现 打印N遍好好学习
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int i = 1;
do {
System.out.println("do-while循环实现第"+ i +"遍好好学习");
i++;
}while(i < 0);
int j = 1;
while(j < 0) {
System.out.println("while循环实现第"+ j +"遍好好学习");
j++;
}
System.out.println("程序结束!");
}
}
3.3 for循环
for(计数器初始化; 判断条件 ; 计数器变化){
循环体;
}for循环同样需要循环的四个必不可少的部分
计数器初始化
判断条件
循环体
计数器变化
使用for循环实现100遍好好学习打印
for循环执行顺序:
第一轮
1.先执行计数器初始化 并且只执行一遍
2.执行判断条件
3.执行循环体
4.执行计数器变化
第二轮
直接从判断条件开始执行
package com.qfedu.test4;
import java.util.Scanner;
/**
* for循环实现统计5门成绩,并且计算平均分
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入名字");
String name = input.next();
double sum = 0;
for(int i = 1;i <= 5;i++) {
System.out.println("请输入第"+ i +"门成绩");
double score = input.nextDouble();
sum = sum + score; // sum += score;
}
System.out.println(name + "的5门成绩平均分是" + sum / 5);
}
}
package com.qfedu.test5;
import java.util.Scanner;
/**
* 输出加法表
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数值");
int num = input.nextInt();
for(int i = 0;i <= num;i++) {
System.out.println(i + "+" + (num - i) + "=" + num);
}
System.out.println("程序结束~");
}
}
4. 循环对比
区别:
1.语法不同
2.执行顺序
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行
3.适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环
5.break关键字
break关键字
break可以用于switch中,表示跳出switch结构
也可以用于循环中,表示跳出当前循环,没有执行完的次数 不再执行
break关键字在循环中 通常结合分支结构来使用
break关键字之后 不能写代码
package com.qfedu.test6;
/**
* break关键字
* break可以用于switch中,表示跳出switch结构
* 也可以用于循环中,表示跳出当前循环,没有执行完的次数 不再执行
*
* 跑10圈 第8圈 太累了 退出
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("跑步第"+ i +"圈");
if(i == 8) {
System.out.println("太累了,不跑了");
break; // 这里表示后续未执行完的循环次数 不再执行 中断循环
}
}
System.out.println("程序结束~");
}
}
package com.qfedu.test6;
/**
* while循环 和 do-while循环中使用break
* @author WHD
*
*/
public class Test3 {
public static void main(String[] args) {
int i = 1;
while(i <= 10) {
System.out.println("跑步第"+ i + "圈");
if(i == 5) {
System.out.println("太累了,退出");
break;
}
i++;
}
System.out.println("===============================================");
int j = 1;
do {
System.out.println("跑步第"+ j +"圈");
if(j == 6) {
System.out.println("太累了,休息");
break;
}
j++;
}while(j <= 10);
}
}
package com.qfedu.test6;
import java.util.Scanner;
/**
* 循环录入某学生5门课的成绩并计算平均分,
* 如果某分数录入为负,停止录入并提示录入错误
* @author WHD
*
*/
public class Test4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入名字");
String name = input.next();
int sum = 0;
boolean flag = true; // 定义布尔类型变量 用于判断哟农户是否录入了错误的成绩
for(int i = 1;i <= 5;i++) {
System.out.println("请输入第"+ i + "门成绩");
int score = input.nextInt();
if(score < 0) {
flag = false;
System.out.println("输入的分数有误,请重新录入");
break;
}
sum += score;
}
//
// if(flag) { // 布尔类型的变量 直接写变量名 等价于 变量 == true
// System.out.println("平均分是" + sum / 5);
// }else {
// System.out.println("分数录入有误,不再计算平均分");
// }
System.out.println(flag ? "平均分是" + sum / 5 : "分数录入有误,不再计算平均分" );
System.out.println("程序结束");
}
}
6.continue关键字
continue :继续
适用场景:只能用在循环中
作用:表示跳出本次循环,继续执行下一次循环
break和continue的区别?
适用场景不同,break可以用于switch和循环中,continue只能用在循环中
作用不同:
break表示中断循环,未执行完的循环次数不再执行 continue表示跳出本次循环,继续执行下一次循环
package com.qfedu.test1;
/**
* continue :继续
* 适用场景:只能用在循环中
* 作用:表示跳出本次循环,继续执行下一次循环
*
* break和continue的区别?
* 适用场景不同,break可以用于switch和循环中,continue只能用在循环中
* 作用不同:
* break表示中断循环,未执行完的循环次数不再执行
* continue表示跳出本次循环,继续执行下一次循环
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
// 适用for循环打印1 ~ 10 当i的取值为5 分别使用break和continue 查看效果
for (int i = 1; i <= 10; i++) {
if(i == 5) {
continue;
}
System.out.println(i);
}
}
}
package com.qfedu.test1;
import java.util.Scanner;
/**
* 循环录入Java课的学生成绩,统计分数大于等于80分的学生比例
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入人数");
int num = input.nextInt();
double count = 0;
for(int i = 1;i <= num;i++) {
System.out.println("请输入第"+ i +"个人的成绩");
int score = input.nextInt();
if(score < 80) {
System.out.println("成绩小于80分,不需要累计");
continue;
}
count++;// 代码可以执行到这一步 表示成绩是大于等于80分的 因为如果小于80分 将执行continue continue后续的代码 不再执行
}
System.out.println("大于等于80分的人数占比是" + count / num * 100 + "%");
}
}
package com.qfedu.test1;
/**
* while循环和do-while循环中使用continue
* @author WHD
*
*/
public class Test3 {
public static void main(String[] args) {
int i = 0;
while(i <= 10) {
i++;
if(i == 5) {
continue;
}
System.out.println(i);
}
System.out.println("====================================");
int j = 0;
do {
j++;
if(j == 5) {
continue;
}
System.out.println(j);
}while(j <= 10);
}
}
package com.qfedu.test1;
/**
* 求1~10之间的所有偶数和
* @author WHD
*
*/
public class Test4 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
if(i % 2 != 0) {
continue;
}
sum += i;
}
System.out.println(sum);
System.out.println("===========================================");
int sum1 = 0;
for(int i = 0;i <= 10;i+=2) {
sum1 += i;
}
System.out.println(sum1);
}
}
7. debug调试
在需要停止的位置左侧,双击打断点,双击取消 断点
8.双重循环
外层变量变化一次 内层循环变量变化一轮
外层循环控制行数
内层循环控制列数
第一行元素的个数决定了计数器的初始值,
元素越来越多,就++,当计数器++的时候,我们必须设置一个上限,也就是我们的条件必须小于或者小于等于某个值,
否则就死循环
元素越来越少,就--,当计数器--的时候,我们必须设置一个下限,也就是我们的条件必须大于或者大于等于某个值,
否则就死循环
package com.qfedu.test3;
/**
* 平行四边形
* 当我们使用多重循环打印三角形:
* 第一行元素的个数决定了计数器的初始值,
* 元素越来越多,就++,当计数器++的时候,我们必须设置一个上限,也就是我们的条件必须小于或者小于等于某个值,
* 否则就死循环
* 元素越来越少,就--,当计数器--的时候,我们必须设置一个下限,也就是我们的条件必须大于或者大于等于某个值,
* 否则就死循环
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) { // 表示行数 5行 执行5次的外层循环
// 左半部分 倒三角
for(int j = 5;j >= i;j--) {
System.out.print("&");
}
// 右半部分 矩形
for(int j = 1;j <= 5;j++) {
System.out.print("*");
}
// 换行
System.out.println();
}
}
}
package com.qfedu.test4;
/**
* 使用多重循环打印正三角形
*
* 外层循环控制行数
* 内层循环控制列数
*
* 第一行元素的个数决定了计数器的初始值,
* 元素越来越多,就++,当计数器++的时候,我们必须设置一个上限,也就是我们的条件必须小于或者小于等于某个值,
* 否则就死循环
* 元素越来越少,就--,当计数器--的时候,我们必须设置一个下限,也就是我们的条件必须大于或者大于等于某个值,
* 否则就死循环
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) { // 5行的图案
// 左半部分 倒三角
for(int j = 5;j >= i ;j--) {
System.out.print("^");
}
// 右半部分 直角三角形 因为左半部分的形状 将右侧挤成了正三角形
for(int j = 1;j <= i * 2 -1 ;j++) {
System.out.print("*");
}
// 换行
System.out.println();
}
}
}
package com.qfedu.test4;
import java.util.Scanner;
/**
* 使用多重循环打印银行菜单系统
* @author WHD
*
*/
public class Test4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int choice = 0;
do {
System.out.println("***********************************************");
System.out.println("*************欢迎使用ATM银行菜单系统*************");
System.out.println("1.开户 2.存款 3.取款 4.贷款 5.修改密码 6.查询余额 0.退出");
System.out.println("***********************************************");
choice = input.nextInt();
switch (choice) {
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 0:
System.out.println("退出,欢迎下次使用~");
break;
default:
System.out.println("输入有误,请重新输入");
break;
}
} while (choice != 0);
System.out.println("程序结束");
}
}