文章目录

  • 4.1 顺序结构
  • 4.2 分支结构
  • 4.3 循环结构
  • 4.4 控制循环结构
  • 4.5 数组类型
  • 4.5 1 理解数组
  • 4.5.2 定义数组
  • 4.5.3 数组初始化
  • 4.5.4 使用数组
  • 4.5.5 foreach循环
  • 4.6 深入数组
  • 4.6.1 内存中的数组
  • 4.6.2多维数组
  • 4.6.3 Java8增强工具类Arrays


4.1 顺序结构

从上到下逐行进行,中间没有任何判断和跳转。

4.2 分支结构

  1. if条件语句
  2. switch语句:控制表达式的数据类型可以是:byte、short、char、int以及枚举、java.long.String。

4.3 循环结构

  1. 当型循环;2.直到型循环;3. for循环;4. 嵌套循环

4.4 控制循环结构

  1. 使用break结束循环:完全结束一个循环,跳出循环体。
  2. 使用continue忽略本次循环:只是忽略本次循环剩下的语句。
  3. 使用return结束方法:当一个方法执行到一个return语句时,这个方法将被结束。

4.5 数组类型

4.5 1 理解数组

  1. 数组只能存储一种类型的数据,而不能存储多种类型的数据。
  2. 数组的长度不可变,即使把某个数组元素情况,他占有的空间依然保留,依然数据该数组,长度也不变。
  3. 数组既可以存储基本数据类型,也可以存储引用数据类型。
  4. 数组本身就是一种引用类型

4.5.2 定义数组

type [] arrayName;

  1. 定义一个数组时,仅仅表示定义了一个引用变量(一个指针),这个引用变量未指向任何有效地址,因此不能指定数组长度
  2. 定义数组知识定义了一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此也不能使用,只有对数组进行初始化之后才能使用。

4.5.3 数组初始化

  1. 静态初始化:由程序员显式指定某个数组元素的初始值,由系统决定数组长度
    arrayName = new type [] {element1,element2…}
  2. 动态初始化:初始化时,程序员只指定长度,有系统为数组元素分配初始值(系统会根据数组的type用默认值初始化数组)。
    arrayName = new type[length];

4.5.4 使用数组

数组下标从0开始,

4.5.5 foreach循环

  1. 无须循环条件,无须循环迭代语句,这些部分由系统完成
  2. foreach循环自动迭代数组的每个元素,但每个元素都被迭代一次后,foreach循环自动结束。
for(type variableName :array|collection){
	//循环体
}

4.6 深入数组

4.6.1 内存中的数组

  1. 如果数组引用变量是一个局部变量(只是一个引用,相当于只是对数组进行了定义,还未初始化),那么它被存储在栈内存中,而实际的数组对象被存储在堆内存中。
    也就是说:数组引用变量访问堆内存中数组元素根本方式
  2. 为什么会有堆内存和栈内存之分?
    如果堆内存中数组不再有任何引用变量指向自己,那这个数组将成为垃圾,会被系统的垃圾回收机制回收,因此为了让垃圾回收机制回收一个数组所占空间,可以将该数组变量赋值为null,也就切断了数组引用变量和实际数组之间的联系,实际数组也就编程了垃圾。
  3. 因为只要类型相互兼容,就可以让一个数组变量指向另一个实际的数组,如果两个数组长度不一样,看起来这样改变了数组的长度,但这只是假象:例如:a=[5,7,20],b=[0,0,0,0,],进行赋值操作:b=a;

    赋值操作:b=a;其实是将数组引用变量b指向了a数组,此时[0,0,0,0]没有任何引用变量指向自己,成为垃圾。但两个堆内存中的数组长度并未改变。
  4. 看待一个数组时,一定要把数组看成两个部分,一部分是栈内存中的数组的引用,另一部分是堆内存中实际的数组对象

4.6.2多维数组

  1. 定义多维数组
    type [][] arrName;
  2. Java语言采用上述方法定义二维数组,但它的本质还是一个一维数组,只是其数组元素也是引用,数组元素里保存的引用指向一维数组。

疯狂java 下载 疯狂java第四版_引用变量


疯狂java 下载 疯狂java第四版_数组_02


PS:此处个人看法吧,虽然a定义了int类型,但是它还是将a[0] 重新初始化了数组类型;只是因为a[0][0]=0,是int类型,因此a[0][1]就必须用int类型了,因为要保证同一个数组里类型一致。

4.6.3 Java8增强工具类Arrays

  1. Arrays类处于java.util下。Java提供了Arrays类里包含的一些static修饰的方法,可以直接操作数组,方法如下:

  2. Java8增强了Arrays类的功能,