一.流程控制语句switch
1.switch
在switch语句中使用switch关键字来描述一个表达式,使用case关键字来描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。具体实现代码如下
switch (表达式){ case 目标值1: 执行语句1 break; case 目标值2: 执行语句2 break; ...... case 目标值n: 执行语句n break; default: 执行语句n+1 break; }
注意:switch语句接受的数据类型为:JDK1.7 数据类型接受 byte short int char enum(枚举), String
case穿透:case具有穿透性,在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。 而且,当case后如果没有break,程序会一直向下穿透
二.数组[引用类型,故存的是内存中的地址]
1.数组的概述
数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。 [存储同一类型的多个元素数据,长度固定]
2.数组的定义
定义数组(只指定数组的长度,由系统自动为元素赋初值的方式称为动态初始化):
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
静态初始化(定义数组的同时就为数组的每个元素赋值 )
数据类型 [] 变量名 = new 数据类型[]{"...","..."}; 数据类型 [] 变量名 = {"...","..."};
定义数组的相关要点说明:
- 数据类型: 数组中存储元素的数据类型
- [] 表示数组的意思
- 变量名 自定义标识符
- new 创建容器关键字
数据类型: 数组中存储元素的数据类型
[] 表示数组的意思
- 元素个数,就是数组中,可以存储多少个数据 (恒定, 定长)
数组创建过程中内存的分配情况
int[] x; // 声明一个int[]类型的变量 x = new int[100]; // 创建一个长度为100的数组
- 第一行代码 int[] x; 声明了一个变量x,该变量的类型为int[],即一个int类型的数组。变量x会占用一块内存单元,它没有被分配初始值。内存中的状态如下图所示
- 第二行代码 x = new int[100]; 创建了一个数组,将数组的地址赋值给变量x。在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化,如下图所示
- 在上图中描述了变量x引用数组的情况。该数组中有100个元素,初始值都为0。数组中的每个元素都有一个索引(也可称为角标),要想访问数组中的元素可以通过“x[0]、x[1]、……、x[98]、x[99]”的形式。需要注意的是,数组中最小的索引是0,最大的索引是“数组的长度-1”。在Java中,为了方便我们获得数组的长度,提供了一个length属性,在程序中可以通过“数组名.length”的方式来获得数组的长度,即元素的个数。
当数组被成功创建后,数组中元素会被自动赋予一个默认值,根据元素类型的不同,默认初始化的值也是不一样的。
数据类型 | 默认初始化值 |
---|---|
byte、short、int、long | 0 |
float、double | 0.0 |
char | 一个空字符(空格),即’\u0000’ |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
* 数组是一个容器: 存储到数组中的每个元素,都有自己的自动编号。自动编号,最小值是0, 最大值,长度-1。自动编号专业名次, 索引(index), 下标, 角标。访问数组存储的元素,必须依赖于索引, 公式 数组名[索引]。
数组的length属性可以得到数组的长度:
数组名.length
结果数据类型为int。数组的最小索引是0, 最大索引数组.length-1。数组的内存图
3.数组中常见的异常
数组的索引越界异常ArrayIndexOutOfBoundsException
空指针异常NullPointerException
4.二维数组的定义
定义方式一:
int arr = new int[3][4]; //定义了一个3*4的二维数组
定义方式二:
int[][] arr = new int[3][];//此方式定义时,数组中每个元素的长度不确定 arr[0] = new int[5];//第一行5个元素 arr[1] = new int[2];//第二行2个元素 arr[2] = new int[3];//第三行3个元素
定义方式三:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};//二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9}
二维数组内存图
三.JVM(Java Virtual Machine)
1.JVM内存划分
- JVM对自己的内存划分为5个区域
- 寄存器:内存和CPU之间
- 本地方法栈: JVM调用了系统中的功能
- 方法和数据共享: 运行时期class文件进入的地方
- 方法栈:所有的方法运行的时候进入内存
- 堆:存储的是容器和对象