数组概述和定义格式说明
数组的作用:用来存储同种数据类型的多个值
数组的概念:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式:数据类型 [ ] 数组名 = new 数据类型[数组的长度];
数组的初始化就是为数组开辟连续的内存空间,并为每个数组元素赋值
•动态初始化 只指定长度,由系统给出初始化值 int[ ] arr = new int[5];
•静态初始化 给出初始化值
动态初始化的格式: 数据类型 [ ] 数组名 = new 数据类型[数组长度];
数组对象打印的格式[I@7852e922
[代表是数组,几个就代表几维
I代表是int类型
@是固定的
19bb25a代表的是数组的地址值
foreach循环打印数组
//foreach循环打印数组
public class HelloWorld {
public static void main(String []args) {
int[] arr = new int[5];
for(int array : arr){
System.out.println(array);
}
}
}
数组是通过下标、索引赋值和取值
基本数据类型的默认初始值 ,每一个基本数据类型都有默认的初始值
整数类型:byte,short,int,long默认初始化值都是0
浮点类型:float,double默认初始化值都是0.0
布尔类型:boolean默认初始化值false
1.栈:存储局部变量
2.堆:存储new出来的数组或对象
3.方法区:面向对象部分讲解
4.本地方法区 : 和系统相关
5.寄存器 :给CPU使用
数组操作的两个常见小问题越界和空指针
如果声明数组为5个元素,则索引取值只能0~5,任何其它的索引取值都会出现java.lang.ArrayIndexOutOfBoundsException: 错误,这叫数组越界
如果数组赋值为空,则会出现空指针,因为数组已经不存在了java.lang.NullPointerException
数组左右调换
//数组左右调换
import java.util.Arrays;
public class HelloWorld {
public static void main(String []args) {
int[] a = {1,6,5,4,9};
for(int i = 0 ; i < (a.length/2);i++){
int b = a[i];
a[i] = a[a.length -1 - i];
a[a.length - 1 - i] = b;
}
for (int b : a){
System.out.println(b); //9 4 5 6 1
}
}
}
二维数组的遍历
//二维数组遍历
import java.util.Arrays;
public class HelloWorld {
public static void main(String []args) {
int[][] a =new int[3][2];
a[0][1] = 6;
for(int i = 0; i < 3; i++){
for(int j = 0;j < 2; j++){
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
二维数组声明方式的简便方法:int[ ][ ] arr = {{11,12},{21,22},{31,32,33}};
下面两种声明方式的区别
int[][] arr = new int[3][2] 声明一个存储3个数组的二维数组,一维数组只能2个值
int[][] arr = new int[3][] 声明一个存储3个数组的二维数组,一维数组只能存几个值不确定