数组意义
-为了存储同种数据类型的多个值
数组概念
- 数组是存储同一种数据类型多个元素的集合,也可以看成一个容器。
- 数组可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式
- 数组类型[ ] 数组名 = new 数据类型[ 数组的长度 ]
数组的初始化动态初始化*
- 什么是数组的初始化
- 如何对对象数组进行初始化
- 动态初始化 只指定长度,由系统给出初始值
- int[ ] arr = new int[ 5 ];
- 注意:不同类型的数组的默认值:
- 整数类型:byte,short,int,long默认初始化只都是0;
- 浮点类型:float,double默认初始化只都是0.0
- 布尔类型:Boolean默认初始化只都是false
- 字符类型:char默认初始化值’\u0000’
- char在内存中占的两个字节,是16个二进制位
- \u0000,每一个0其实代表的是16进制的0,那么四个0就是代表16个二进制位
- 例如:输出arr的值为(system.out.print(arr)):[I@19bb25a
- [ 代表是数组,几个就代表几维
- I 代表是int类型
- @ 是固定的
- 19bb25a 代表的是十六进制的地址值
- 例如:输出arr的值为(system.out.print(arr)):[I@19bb25a
- 静态初始化 给出初始值,由系统决定长度
- 动态初始化 只指定长度,由系统给出初始值
- 静态初始化的格式:
- 数据类型[ ] 数组名 = new 数据类型 [ 数组长度 ];(数据类型[ ] 数组名 = new 数据类型[ ] {元素1,元素2,…..})
- 简易格式:数据类型[ ] 数组名 = {元素1,元素2,…..}
1、int[ ] arr = new int[]{0,1,2,5,6};
也可以(先声明再赋值):
int [ ] arr ; //声明数组引用
arr = {0,1,2,5,6};
不可以:int[ ] arr = new int[ 5 ]{0,1,2,5,6};
2、int[ ] arr = {0,1,2,5,6};注:这种必须声明和赋值一起。
java中内存分配及栈和堆的区别
- 栈(先进后出):
- 存储局部变量(局部变量:定义在方法声明上和方法中变量)
- 堆:
- 存储new出来的数组或对象
- 方法区:
- 面向对象
- 本地方法区:
- 和系统相关
- 寄存器:
- 给CPU用的
解说图一:
解说图二:
- 给CPU用的
数组下标越界异常,访问到数组中不存在的索引:
public class TestArray {
public static void main(String[] args){
int[] array = new int[3];//动态初始化,创建3块连续的空间。
System.out.println(array[5]);
}
}
报的错误,数组越界异常或叫角标越界异常:
获取数组的最值:
public class TestArray {
public static void main(String[] args){
int[] array = new int[]{1,5,6,8,9};
getMax(array);
}
public static void getMax(int[] array){
int max = array[0];
for (int i = 0; i < array.length; i++){
if (max < array[i]) max = array[i];
}
System.out.println(max);
}
}
数组的反转(首位调换)
代码:
public static void main(String[] args){
int[] array = new int[]{1,5,6,8,9};
reverseArray(array);
printArray(array);
}
public static void reverseArray(int[] arr){
//arr[0]与arr[arr.length - 1 - 0]交换
for (int i = 0;i < arr.length / 2; i++){
int temp = arr[i];
arr[i] = arr[arr.length -1 - i];
arr[arr.length-1-i] = temp;
}
}
public static void printArray(int[] arr){
for (int i = 0 ;i < arr.length; i++)
System.out.println(arr[i]);
}
根据所给的数据获取该值在数组中的索引
代码:
public static void main(String[] args){
int[] array = new int[]{1,5,6,8,9};
System.out.println(getIndex(array, 8));
}
public static int getIndex(int[] arr , int value){
for (int j = 0; j < arr.length; j ++){
if (arr[j] == value)
return j;
}
return -1;
}