数组 1、数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。 2、数组既可以存储基本数据类型,也可以存储引用数据类型。
语句定义格式: 格式1:数据类型[] 数组名; 举例:int[] arr; 推荐第一种方式。 格式2:数据类型 数组名[]; 举例:int arr[] 定义一个存放int类型数据的数组。 为什么不推荐使用第二种方式。 从辨识度来看,第一种一眼就能识别是一个数组。 从使用长久来看,今后使用的趋势是第一种,第二种渐渐会被淘汰。 数组不初始化不能被使用,初始化? 初始化就是给这个变量开辟一个内存空间,为将来的值提供存放的空间 那么数组如何初始化呢? 两种: 1、动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。 动态初始化的语句格式: 存放元素的数据类型[] 数组名 = new 存放元素的数据类型[数组的长度]; 举例:定义一个可以存放3个int类型数据的数组。 int[] bigdata15 = new int[3]; 2、静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
重点:
堆内存中的系统默认值是如何去给的呢?
答:根据元素的数据类型不同,默认值也不同。
基本数据类型
byte,short,int,long; 0
float,double; 0.0
boolean; false
引用数据 null
一维数组的静态初始化: 初始化时指定每个数组元素的初始值,由JVM决定数组长度。(JVM根据我们给的元素个数自动推断长度) 静态初始化的语句格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4...}; 举例:int[] arr = new int[]{11,22,33,44,55}; 表示的是定义一个存放5个int类型元素的数组,元素分别是11,22,33,44,55 简化写法: 数据类型[] 数组名 = {元素1,元素2,元素3,元素4...}; 举例:int[] arr = {100,200,300,400}; 表示的是定义一个存放4个int类型元素的数组,元素分别是100,200,300,400
动态初始化:
1.动态初始化一维数组,会在堆内存中分配这个数组;
并且数组中每一个元素都采用默认值
二维数组:
二维数组的语句定义格式: 数据类型[][] 变量名 = new 数据类型[m][n]; (推荐这种写法) m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 举例: int[][] arr = new int[3][2]; 定义了一个二维数组arr 这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2] 每个一维数组有2个元素,可以通过arr[m][n]来获取 表示获取第m+1个一维数组的第n+1个元素 还有可能看到以下几个写法,它们也是正确的: 1、int[] arr[] = new int[3][2]; 2、int arr[][] = new int[3][2];
定义二维数组的两种格式:
定义一个二维数组,使用格式一做初始化 int[][] arr = new int[3][2];
定义二维数组的第二种格式 int[][] arr = new int[3][];
//给二维数组中第一个元素赋值一个一维数组 //赋值后的意义是:表示二维数组种第一个元素是一个长度为4的int类型的一维数组。 arr[0] = new int[4]; //赋值后的意义是:表示二维数组种第二个元素是一个长度为5的int类型的一维数组。 arr[1] = new int[5]; //赋值后的意义是:表示二维数组种第三个元素是一个长度为10的int类型的一维数组。 arr[2] = new int[10];
二维数组中第三种格式: 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; 举例:int[][] arr = new int[][]{{1,2},{3,4,5},{1,2,34,5}}; 简化版格式: 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}; 举例:int[][] arr = {{1,2},{3,4,5},{1,2,34,5}}; 表示的是:二维数组arr中有三个一维数组,分别是{1,2},{3,4,5},{1,2,3,4,5}