什么时候使用循环?
大量,重复, 有规则 。
循环条件
条件初始值,条件的范围,条件的改变。
while循环
语法:
while(条件表达式){
// 循环体
}
特点: 先判断,再执行
do-while循环
语法:
do{
//循环体
}while(条件表达式)
特点:先执行,再判断 , 至少执行一次
for循环
语法:
for(表达式1; 表达2 ; 表达式3){
//循环体
}
注:for循环中的表达式是可以省略的。表达式可以多个,用逗号隔开。
//将初始条件写在外面
int i =0;
for(;i<10;i++){
//循环体
}
//省略判断条件就会默认为真,一直循环
for(int i =0; ;i++){ //死循环
//循环体
}
//将条件改变写在循环体内部
for(int i =0;i<10;){ //死循环
//循环体
i++;
}
//多个表达式
for(int i=0, int j=0; i<10, j<20; i++, j++){
//循环体
}
无限循环(死循环)
for(;;){
//循环体
}
while(true){
//循环体
}
break 与 continue
continue : 只能用于循环结构( 包括: while , do-while , for ), 作用: 结束本次循环,进行下一次循环。
break : 可以使用于switch选择结构 和 循环结构 ( 包括: while , do-while , for ), 结束当前循环(或者当前switch选择)。
for(int i=1; i<100; i++){
if(i%2!=0){
continue;
}
System.out.println(i);
} //输出1-99之间的偶数
三个的区别(使用场景)
do-while : 先执行,后判断 (次数不固定)
while: 先判断,后执行(次数不固定)
for: 先判断,后执行 (次数固定)
双重循环
双重循环的定义:
在一个循环中,嵌套另一个循环; 这就叫作: 双重循环(或者叫循环的嵌套)。
多重循环的定义:
多个循环的嵌套
注: 一般不超过3个循环 , 超过了,就要注意进行代码的优化。
双重for 循环的格式
外层和内层循环,都是任意的循环
原理: 外层循环循环一次, 内层循环遍历一遍
遍历(从条件开始,到条件的结束 ,整个过程,称为是遍历 )
for(初始条件1, 条件判断1,条件改变1){
//循环语句1
for(初始条件2, 条件判断2,条件改变2){
//循环语句2
}
}
执行顺序:
- 初始条件1
- 条件判断1
- 循环语句1
- 初始条件2
- 条件判断2
- 循环语句2
- 条件改变2
- 循环 5,6,7 直到条件为假里
- 执行条件改变1
- 再从2开始进行循环,直到条件判断1 不成立
例1:打印矩形
打印矩形:(先循环行,再循环列)
******************
******************
******************
******************
代码:
System.out.println("请输入行数");
Scanner sc = new Scanner(System.in);
int rows = sc.nextInt();
System.out.println("请输入列数");
int cols = sc.nextInt();
for(int i= 1; i<=rows; i++){
//行的内容
for(int j=1;j<=cols;j++){
System.out.print("*");
}
System.out.println(""); //相当于换行
}
例2:九九乘法表
\t : tab 水平制表,相当于4个空格
for(int i=1 ; i<=9 ; i++){ // 管行
// 输出行的内容
for(int j=1; j<=i; j++){ // 列
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println("");
}
println与print
println:输出后会换行
print:输出后不换行
双重循环中使用break
正常情况break,跳出的是离它最近的循环
public static void main(String[] args){
for(int i = 0; i<3; i++){
System.out.println("i:"+i); //i:0 i:1 i:2
if(i==2){
break;
}
for(int j= 0 ;j<3; j++){
System.out.println("j"+j);
}// 0 1 2 0 1 2
}
}
双重循环中使用continue
正常情况continue,结束离它最近的循环这次循环,进行下一次循环
增强型for循环(for Each)
是JDK1.5以后出来的一个**高级for循环**,专门用来遍历**数组**和**集合**。
for(数组中元素的数据类型 变量名 : 数组名){
// 变量名,指是数组中的具体元素
}
如:
int[] arr = {1,2,3,4,5}
for (int item: arr){
System.out.println(item);
}//结果为1 2 3 4 5
// 其中item为一个临时变量,用于保存遍历到的arr的值,
使用时要注意的事项
1.增强for循环底层也是使用了迭代器获取的,在使用增强for循环遍历元素的过程中不准使用集合对象对集合的元素个数进行修改。
2.迭代器与增强for循环遍历元素的区别:使用增强for循环遍历集合的元素时,不能调用迭代器的remove方法删除元素,而使用迭代器遍历集合的元素时可以删除集合的元素。
3.增强for循环和普通for循环的区别:普通for循环可以没有遍历的目标,而增强for循环一定要有遍历的目标。
相对于普通for循环(;;)而言 增强for循环有两个好处:
1.写起来简单容易
2.遍历集合、数组比较简单