循环结构
1.1 循环结构:for
1.1.1 概述
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。
它由循环体中的条件,判断继续执行某个功能还是退出循环。
根据判断条件,循环结构又可细分为先判断后执行的循环结构和先执行后判断的循环结构。
1.1.2 形式
for(开始条件;循环条件;更改条件){
循环体代码…
}
1.1.3 练习:打印数字0~10
package day999;
public class ttttt {
public static void main(String[] args) {
f1();
}
public static void f1(){
for (int i = 0; i <= 10; i++) {
System.out.print(i);
}
}
}
1.2 嵌套for循环
1.2.1概述
根据外层的条件,判断里层能否执行,如果能执行,就把里层代码都循环完毕后,再继续执行外层,继续判断。
1.2.2 形式
for(…){
for(…){
}
}
1.2.3入门案例
package day04;
public class T {
public static void main(String[] args) {
// f1();
f2();
}
//总结1:当i=1时,j取到了所有满足条件的数据,1,2,3,4,5。
//也就是说外循环执行1次,内循环执行多次
private static void f1() {
for(int i=1;i<=3;i++){//外循环
System.out.println("i="+i);//1,2,3
for(int j=1;j<=5;j++){//内循环
System.out.println("j="+j);//1,2,3,4,5
}
}
}
//总结2:外循环控制行,内循环控制列
private static void f2() {
for(int i=1;i<=3;i++){
for(int j=1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
1.2.4 练习:打印99乘法表
package day04;
//99乘法表
public class Test{
private static void f4() {
for (int i = 1; i < 9; i++) {//外循环,控制行,是一定的
for (int j = 1; j <= i; j++) {//内循环,列是不固定的,是递增的
System.out.print(i+"*"+j+"="+i*j+" ");//保证第一行打印出来一个*,注意条件
}
System.out.println();
}
}
}
1.3 break和continue
1.3.1概述
用来终止循环,可以用两种方式
1.3.2形式
break: 中断当前循环,简单粗暴
for(){
代码1
if(条件){
代码3…
break;//如果成立,直接跳出这个for循环
}
代码2…
}
continue:跳出本次循环,进入下一轮
for(){
代码1
if(条件){
代码3…
continue;//如果成立,跳出本次for循环,进入下一轮
}
代码2…
}
1.3.3 练习:找数字88
package day04;
import java.util.Scanner;
public class Test4_breakcontinue {
public static void main(String[] args) {
f2();
}
//找88
private static void f2() {
for(int i=1;i<=100;i++){
//一直输入…
int j = new Scanner(System.in).nextInt();
if(j!=88){
continue;//继续输入
}
if(j==88){
System.out.println("找到了88...");
break;
}
}
}
}
1.4 循环结构2:while
1.4.1 概述
先判断,再执行
1.4.2 格式
while(执行条件){
代码…
}
1.4.3 练习:猜数字
package day004;
import java.util.Random;
import java.util.Scanner;
public class Test5_猜数字 {
public static void main(String[] args) {
System.out.println("猜1~1000的随机数");
//系统产生随机数,从0开始,要从1开始就加1
int i = new Random().nextInt(1000)+1;
System.out.println(i);
while(true){
//接收用户输入的值
int sc = new Scanner(System.in).nextInt();
//判断
if(sc>i){
System.out.println("大");
}else if(sc<i){
System.out.println("小");
}else{
System.out.println("right");
break;
}
}
}
}
1.5 循环结构:do-while
1.5.1 概述
先执行,再判断
1.5.2 格式
do{
代码…
}while(执行条件);
1.5.3 练习:猜数字
package day004;
import java.util.Random;
import java.util.Scanner;
public class Test5_猜数字 {
public static void main(String[] args) {
System.out.println("猜1~1000的随机数");
//系统产生随机数,从0开始,要从1开始就加1
int i = new Random().nextInt(1000)+1;
System.out.println(i);
while(true){
//接收用户输入的值
int sc = new Scanner(System.in).nextInt();
//判断
if(sc>i){
System.out.println("大");
}else if(sc<i){
System.out.println("小");
}else{
System.out.println("right");
break;
}
}
}
}
1.6 变量
1.6.1 概述
可以改变的数,称为变量。一般通过三部分来描述一个变量。变量类型,变量名,变量值。其中三部分都是可以改变的,根据需要来确定即可。
变量的使用原则:就近原则。尽量控制到最小范围。。
1.6.2 局部变量
定义在方法里,或者局部代码块中。
注意:必须手动初始化,来分配内存。如:int i=5;
作用域也就是方法里或者局部代码块里,方法运行完内存就释放了。
1.6.3 成员变量
定义在类里。
注意:不用初始化,也会自动被初始化成默认值。
作用域是整个类中,类消失了,变量才释放。
基本类型 | 默认值 |
---|---|
byte | 0 |
shor | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
boolean | false |
1.6.4 测试
package cn.tedu.arrays;
public class Test2_Variable {
//1、成员变量:在类里方法外是
//作用范围就是整个类里
//可以不初始化,也会有默认值
int age = 20;
int sum = 30;
public static void main(String[] args) {
//2局部变量:在方法里是
//作用范围就是方法里,出了这个方法就不认识了
//必须初始化
int sum = 10;
System.out.println(sum);//10
//3、变量的就近原则,附近有同名的会去执行最近的
System.out.println(sum);//10
}
}
1.7 总结
三种循环都可以互相代替
- for:知道循环次数
- while/do while:当循环次数不确定时
- while:先判断,不符合规则,不执行代码
- do while:代码最少被执行一次,再去判断,符合规则,再次执行代码