数组

数组

数组的概念

​ 数组是引用数据类型
​ 类型要统一
​ 数组的长度在运行期间不可以改变

初始化

动态初始化(指定长度)

​ 数据类型[] 数组名称 = new 数据类型[数组长度]

​ 使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值.规则如下:

  1. 如果是整数类型,那么默认值为0;
  2. 如果是浮点类型,那么默认值为0.0;
  3. 如果是字符类型,那么默认值为’\u0000’ u代表Unicode ,0000代表十六进制数;
  4. 如果是布尔类型,那么默认值为false;
  5. 如果是引用类型,那么默认值为null(空常量);

注意事项:

  1. 静态初始化没有直接指定长度,但是仍然会自动推算得到长度。
  2. 静态初始化标准格式可以拆分成为两个步骤。
  3. 动态初始化也可以拆分成为两个步骤。
  4. 静态初始化一旦使用省略格式,就不能拆分成为两个步骤了。

使用建议:
如果不确定数组当中的具体内容,用动态初始化;否则,已经确定了具体的内容,用静态初始化。

注意事项

静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class test010 {
public static void main(String[] args) {

int[] arr1 = new int[10];
int[] arr2 = new int[]{1,2,3,4};

System.out.println(arr1[0]);//默认值为0;
System.out.println(arr1[1]);//默认值为0;
System.out.println(arr1[2]);//默认值为0;

/*数组赋值*/
arr1[1] = 100;
System.out.println(arr1[1]);
}
}
拆分格式
  1. 数据类型[] 数组名;

    1. 数组名 = new 数据类型名[]{元素1,元素2,…}
    2. 数组名 = new 数据类型名[长度];
1
2
3
4
5
6
7
8
9
public class test010 {
public static void main(String[] args) {

int[] arr;
arr = new int[]{10,2,3,4};
//arr = new int[10];

}
}

静态初始化(指定内容)

​ 数据类型[] 数组名 = new 数据类型[] {元素1,元素2,…,元素n};

1
2
3
4
5
6
7
public class test010 {
public static void main(String[] args) {

int[] arr = new int[]{1,2,3,4};

}
}
省略格式

​ 数据类型[] 数组名 = {元素1,元素2,…,元素n};

静态初始化不能使用省略格式

1
2
3
4
5
6
7
public class test010 {
public static void main(String[] args) {

int[] arr = {1,2,3,4};

}
}
拆分格式

​ 不能再用省略格式
​ 数据类型[] 数组名;
​ 数组名 = new 数据类型名[]{元素1,元素2,…}

1
2
3
4
5
6
7
public class test010 {
public static void main(String[] args) {

int[] arr;
arr = new int[]{1,2,3,4,5};
}
}

访问数组元素

​ 直接打印数组名,会打印数组内存地址哈希值
​ 格式 : 数组名[索引值]
​ 索引值从0开始到数组长度-1结束

1
2
3
4
5
6
7
8
9
10
11
12
13
public class test010 {
public static void main(String[] args) {

int[] arr;
arr = new int[]{1,2,3,4,5};
System.out.println(arr);//打印数组内存地址哈希值
System.out.println(arr[0]);//使用数组下标访问数组元素
for(int i = 0; i < arr.length;i++)//数组下标不大于数组的长度
{
System.out.println(arr[i]);
}
}
}

二维数组

1
2
3
4
int [][] arr = new int [][]={
{1,3,4},
{1,2,3}
};