一维数组(八)
一、概念
存储同一种数据类型的多个元素的容器
二、格式
1、数据类型[] 数据名;--int []a:定义一个int类型的数组a变量
2、数据类型 数据名[];--int a []:定义一个int类型的a数据变量
注意:效果可以认为是一样的,都是定义一个int数组,但是念法上有些小区别,推荐使用一种
三、数组初始化
1、概念:就是为数据开辟内存空间,并为每个数组元素赋予值
2、初始化方式
动态初始化:指定长度,有系统给出初始化值:数据类型[]数组名=new数据类型[数组长度]
int []arr=new int[3]
静态初始化:给出初始化,由系统决定长度:数据类型[]数据名=new 数据类型[]{元素1,元素2...}-->数据类型[]数据名={元素1,元素2...}
int []arr=new int[]{1,2,3};--->简化后:int []arr={1,2,3};
3、获取数组中的元素
A、数组名[索引]:索引就是每个元素的编号,从0开始,最大索引是数组长度-1
4、常见问题
A、ArrayIndexOutOfBoundsException:数组索引越界异常-->访问了不存在的索引
B、NullPointerException:空指针异常-->数组已经不在指向堆内存了。而你还用数组名去访问元素
四、Java中的内存分配
五、练习
1、遍历数组
int [] arr={11,22,33,44,55};
for(int i =0;i<arr.length;i++){
System.out.println(arr[i]);
}
2、获取数据中的最大,小值
@Test
public void test1(){
int[] arr = {34,98,10,25,67};
System.out.println(getMax(arr));
System.out.println(getMin(arr));
}
public static int getMin(int []arr){
int min=arr[0];
for (int i = 1; i < arr.length; i++) {
if(min>arr[i]){
min=arr[i];
}
}
return min;
}
public static int getMax(int []arr){
int max =arr[0];
for (int i = 1; i <arr.length ; i++) {
if(max<arr[i]){
max=arr[i];
}
}
return max;
}
3、数组元素逆序
@Test
public void test1(){
int[] arr = {34,98,10,25,67};
reverse2(arr);
printArr(arr);
}
public static void reverse2(int []arr){
for(int start=0,end=arr.length-1;start<=end;start++,end--){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
public static void reverse(int [] arr){
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 printArr(int []arr){
System.out.print("[");
for (int i = 0; i <arr.length ; i++) {
if (i==arr.length-1){
System.out.println(arr[i]+"]");
}else {
System.out.print(arr[i]+",");
}
}
}
4、数组查表法(输入索引,查找对应数据)
@Test
public void test1(){
int[] arr = {34,98,10,25,67};
int index=1;
for(int i=0;i<arr.length;i++){
if(arr[index]==arr[i]){
System.out.println(arr[index]);
}
}
}
5、数组元素查找(查找指定元素第一次在数组中出现的索引)
@Test
public void test1(){
int[] arr = {34,98,10,25,67};
System.out.println(getIndex(arr,98));
}
public static int getIndex(int[]arr,int value){
int index=-1;
for (int i = 0; i < arr.length; i++) {
if(arr[i]==value){
index=i;
break;
}
}
return index;
}