4.1. 顺序结构
4.2 分支结构
if和switch
4.3 循环结构
4.3.1 while
4.3.2 do while
4.3.3 for
4.3.4 嵌套循环
4.4 控制循环结构
4.4.1 break 语句不仅可以结束其所在的循环,还可以结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。
Java中的标签就是一个紧跟着英文冒号(:)的标识符。Java中的标签只有放在循环语句之前才有用。
![break用法示例](https://img-blog.csdn.net/20170717145032120?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzczNzE3MzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.4.2 continue 后也可以根一个标签,用于直接跳过标签所标识循环的档次循环的剩下语句,重新开始下一次循环。
4.4.3 return
4.5 数组类型
4.5.1 理解数组
4.5.2 定义数组
Java支持两种语法格式定义数组:
- `type[] arrayName`;
- `type arrayName[]`;
4.5.3数组初始化
数组初始化两种方式:
- 静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。
静态初始化格式:`arrayName = new type[]{element1, element2,...}`
此处的type必须与定义数组变量时所使用的type相同,也可以时定义数组时所指定的type的子类,并使用花括号把所有的数组元素括起来,多个数组元素之间以英文逗号(,)隔开,定义初始化的花括号紧跟[]之后。执行静态初始化时,显示指定的数组元素值的类型必须与new关键字后的type类ixng相同,或者是其子类的实例。
简化静态初始化语法格式:`type[] arrayName = {element1, element2, element3,...}`
- 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
动态初始化格式:`arrayName = new type[length]`,此处的type必须与定义数组时使用的type类型相同,或者时定义数组时使用的type类型的字类。动态初始化系统负责为这些数组元素分配初始值,分配初始值规则如下:
- 数组元素的类型是基本类型中的整数类型(byte, short,int和long),则数组元素的值是0;
- 数组元素的类型是基本类型中的浮点类型(float, double),则数组元素的值是0.0;
- 数组元素的类型是基本类型中的字符类型(char),则数组元素的值是'\u0000';
- 数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是flse;
- 数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null;
不要同时使用静态初始化和动态初始化。
4.5.4使用数组
4.5.5 foreach循环
foreach循环遍历数组和集合时,无须获得数组和集合长度,无须根据索引来访问数组元素和集合元素,foreahc循环自动遍历数组和集合的每个元素。
foreach循环语法格式如下:
for(type variableName:arry | collection)
{
//variableName 自动 迭代访问每个元素
}
4.6深入数组
4.6.1内存中的数组
实际的数组对象被存储在堆(heap)内存中;如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈(stack)内存中。![数组在内存中存储示意图](https://img-blog.csdn.net/20170717164909917?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzczNzE3MzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4.6.2基本类型数组的初始化
4.6.3 引用类型数组的初始化
4.6.4Java 8 增强的工具类:Arrays
Java提供的Arrays类包含的一些static修饰的方法可以直接操作数组。