1 while循环
while(boolean结果)
语句/语句组
-
每次循环做什么事
-
循环条件
-
循环条件改变。
循环嵌套
在一个循环中,出现了另一个循环。
无限循环
循环条件永远为真。
int i = 10 ;
while(i > 0){
//....
i++ ;
}
-------------------------
while(true){
}
2 break关键字
可以用在两个位置
-
在switch中,结束整个switch分支结构,防止穿透 。
-
在循环中,手动停止循环
循环结束有两种情况
-
每次循环操作完成后,都会进行下一次循环条件判断,条件不成立,循环自然结束。
-
在循环中,使用break关键字,结束整个循环。
import java.util.* ;
public class Test2{
public static void main(String[] args){
//控制台不停的输入内容,直到输入-1为止。
Scanner input = new Scanner(System.in) ;
while(true){
int num = input.nextInt();
if(num == -1){
break ;
}
}
}
}
3 continue关键字
只能用在循环中。
结束当前这一次循环,进行下一次循环判断。
4 循环命名
多在循环嵌套中配合break和continue关键字使用。
-
在循环语法前,使用
name :
为循环命名 -
在循环中,使用
break name
或continue name
对指定的循环做控制。
a:while(条件1){
b:while(条件2){
break ; //结束当前条件2这个循环,继续进行条件1的下一次循环
continue ;//结束条件2当前这次循环,就绪进行条件2的下一次循环判断
break a ;//结束条件1的循环,结束最外层整个循环
continue a ;//结束条件1的本次循环,继续进行条件1的下一次循环判断
//目前等价于break
}
}
public class Test3{
public static void main(String[] args){
char c = 'A' ;
a:while(c <= 'E' ){
System.out.println(c);
int j = 1 ;
while(j <= 5){
System.out.println(" " + j);
if(c == 'C' && j==3){
break a;
}
j++ ;
}
c++ ;
}
}
}
5 do-while循环
-
更适合具有试探性的循环场景。
//控制台不断输入数字,直到输入-1为止
int num ;
do{
num = input.nextInt() ;
}while(num != -1) ;
6 while 与 do-while
循环分解
while(boolean){}
if()
{}
if()
{}
if()
{}
if() --- end
-
do-while至少会执行一次。 while有可能一次都不执行 (第一次判断就失败)
-
当循环可以执行起来时 (通过多次循环后,才结束)
-
如果循环条件的改变发生在循环体中, do-while和while执行次数相同,while多判断一次
-
如果循环条件的改变发生在判断体中
-
public class Test4{
public static void main(String[] args){
//重要的事情打印3次
{
int count = 0 ;
while(count++ < 3){ //判断体中改变,打印3次
System.out.println("Hello World !!!");
//count++ ; //循环体中改变, 打印3次
}
}
System.out.println("-------------------------");
{
int count = 0 ;
do{
System.out.println("Hello World !!!");
//count++ ; //循环体中改变,打印3次
}while(count++ < 3); //判断体中改变,打印4次
}
}
}
7 for循环
语法
for( 1 ; 2 ; 4){
3
}
-----------------------------
int count = 0 ;
while(count < 3){
print("dmc") ;
count++ ;
}
for(int count=0 ; count < 3 ; count++){
print("dmc") ;
}
-
1部分 主要是用来做条件变量的定义与初始化
-
2部分 主要是用来作为判断条件,需要是一个boolean结果。根据这个boolean判断是循环是否继续或停止
-
3部分 循环体,每次循环要执行的操作
-
4部分 主要用来做循环条件的改变。
-
124部分都不是必须要写。 2部分不写, 表示无限循环。
8 数组
8.1 数组的特点
-
数组是一个容器,用来存储一组位置连续,类型相同的变量(数据)
当我们有一组类型相同,且操作相似的数据需要存储时,就可以存储在数组(的变量中)中
-
数组数据 , 数组本身也是一个数据,也可以存储在其他的变量中
可以存储在普通的变量中,也可以存储在另一个数组变量中 (多维数组)
-
数组类型 数组数据的类型就是数组类型
数组类型是引用类型中一种。 (引用类型包括 数组类型 , 对象类型)
数组类型的数据,是一个复杂的数据,包含了一堆子(变量)数据。 不能直接存储在一个变量中,存储在JVM的堆空间中,会有存储地址。
所以我们在应用引用类型数据时,都是通过地址间接操作(对空间中变量里的)数据
8.2 创建数组
也可以称为 定义数组(从无到有),产生一个数组
new int[5] ;
-
new
是一个关键字,用来在堆空间中创建一个引用类型的数据 (分配一块内存空间) -
[]
表示创建的是一个数组类型的数据。 -
[5]
表示数组中包含5个变量 (子数据) -
int
表示数组里的变量的类型
数组中的变量没有名字,但有位置,称为下标 或 索引 。 这个位置从0开始计数
在堆空间中产生的变量,会有默认值。
-
栈中的变量(写在主方法力的变量),不会有默认值,使用时我们必须手动赋值(通过代码赋值)
-
堆中的变量不能独立存在,而是存在于引用类型数据中
-
默认值是什么?
-
基本类型的默认值是 0 表现形式可能不同(0 , 0.0 , false , 空字符 )
-
引用类型的默认值是null
-
数组元素
-
数组中的每一个变量,都成为数组的元素,也可以称为数组的属性。
-
数组还有一个额外的元素,叫length 存储数组中变量的个数 。 只能取值,不能赋值
-
数组一旦创建,长度不可变(包含的变量数量不可变)
8.3 数组的应用
-
数组数据的应用
(new int[5]) 和 10 都属于数据 . 对于数组这个引用类型的数据而言, 实际用的是地址。
print(10) ;
int num = 10 ;
int[] nums = (new int[5]) ;
print( (new int[5]) ) ;
print( nums ) ;
数组容器的应用 . 本质就是使用数组中的变量,也就是找到变量
nums //存储的是数组地址,就相当于找到了数组
nums[0] //找到数组中的某一个变量 等价于 int num ;
num = 10 ;
print(num) ;
nums[0] = 10 ;
print(nums[0]) ;
nums.length ;
nums[0]
(new int[5])[0] = 10;
8.4 数组的初始化
-
静态初始化
int[] nums = new int[]{10,20,30,40,50} ;
或
int[] nums = {10,20,30,40,50} ;
动态初始化
int[] nums = new int[5] ;
nums[0] = 10 ;
nums[1] = 20 ;
....