目录
视频教程传送门 -> https://www.bilibili.com/video/BV1Cv411372m?p=39
IDEA的两个快捷键
1.把一段代码包进一个结构,选中代码段 -> 按 Alt + Ctrl + T
2.for循环快捷写法
fori => create iteration loop
itar => create iterate elements of array
更多参考 IntelliJ IDEA(快捷键):快速生成各种for循环 https://blog.csdn.net/Soinice/article/details/83505198
Debug工具
在需要打断点的地方打上断点,然后右键 "Debug 'BreakAndContin....main()'"
点击下一步,可以看到每步变量的值;点击左边第二个绿色的按钮,可以去下一个断点
更多参考 Intellij IDEA调试功能使用总结 https://blog.csdn.net/deepwishly/article/details/54645022
分支
if、switch分支适合的业务场景
if在功能上远远强大于switch ->
if适合做区间匹配
switch适合做值匹配的分支选择
switch分支注意事项
- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double、float、long
- case给出的值不允许重复,且只能是字面量,不能是变量
- 不要忘记写break,否则会出现穿透现象
switch的穿透性
如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支。
【例】月份天数查看器
package com.test.branch;
public class SwicthDemo {
public static void main(String[] args) {
// 用户输入月份可以展示该月份的天数
// 1、3、5、7、8、10、12月份是31天
// 2月份是闰年是29天、非闰年是28天
// 4、6、9、11月份是30天
int month = 7;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month +"是31天!");
break;
case 2:
System.out.println(month +"月闰年为29天、非闰年为28天!");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month +"是30天!");
break;
default:
System.out.println("数据有误!");
}
}
}
循环
for 和 while 的区别
- for循环和while循环的执行流程是一样的
- 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环
- for循环中,控制循环的变量只在循环中可以使用;while循环中,控制循环的变量在循环后还可以继续使用(如下,因为前者m是在花括号之外定义的)
死循环
for(;;) {
}
----------------
while(true) {
}
----------------
do {
} while (true);
跳出嵌套循环(标签、标志)
方法一,使用标签
break 可以用在嵌套循环中跳出整个外部循环的并立即结束它。
OUT:
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
…
break OUT;
}
}
continue: 可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。
OUT:
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
…
count OUT;
}
}
【例】如下使用了标签OUT
package com.test.loop;
public class BreakAndContinueDemo {
public static void main(String[] args) {
OUT:
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print(j + "\t");
if(i == 2 && j == 3){
System.out.print("\n");
break OUT; // 指定跳出外部循环,并结束外部循环了!
}
}
System.out.print("\n");
}
System.out.println("------------------");
OUT:
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print(j + "\t");
if(i == 2 && j == 3){
System.out.print("\n");
continue OUT ;
}
}
System.out.print("\n");
}
System.out.println("------------------");
}
}
输出结果:
不使用标签输出如下,
方法二,上层循环定义一个标志
break 同上
continue 行为和上述不一样,会完成当次循环然后跳出外部循环
package com.test.loop;
public class BreakAndContinueDemo {
public static void main(String[] args) {
boolean flag = true;
for (int i = 1; i <= 4 && flag; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print(j + "\t");
if(i == 2 && j == 3){
System.out.print("\n");
flag = false;
break; // 指定跳出外部循环,并结束外部循环了!
}
}
System.out.print("\n");
}
System.out.println("------------------");
flag = true;
for (int i = 1; i <= 4 && flag; i++) {
for (int j = 1; j <= 5; j++) {
System.out.print(j + "\t");
if(i == 2 && j == 3){
System.out.print("\n");
flag = false;
continue ;
}
}
System.out.print("\n");
}
System.out.println("------------------");
}
}
输出如下:
随机数对象Random
nextInt(n) 生成 0 n-1 之间的随机数,不包含n
【例】生成5个1~10的随机整数
package com.test.loop;
import java.util.Random;
public class testWhileFor {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 5; i++) {
int data = r.nextInt(10) + 1;
System.out.println(data);
}
}
}
输出结果示例