黑马程序员 java基础之数组
静态初始化:
int[] arr = new int[2];//建议格式
int arr[] = new int[2];//也可以
int[] arr = new int[]{3,1,6,5,4};
int[] arr = {3,1,6,5,4};
int[] arr = new int[5];
arr[0] = 90;
arr[1] = 80;
boolean型数组默认值为false.
数组操作常见问题:
ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的角标。
NullPointerException:空指针异常。当引用没有任何指向值为null的情况,该引用还在用于操作实体。
数组常见操作-遍历
获取数组中的元素。通常会用的遍历。
数组中有一个属性可以直接获取到数组元素个数。length.
使用方式:数组名称.length
排序-选择排序、冒泡排序
选择排序特点:
内循环结束一次,最值出现在头角标位置上。
public static void selectSort(int[] arr)
for (int x=0; x<arr.length-1 ; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
/*
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
*/
swap(arr,x,y);
}
}
}
}
冒泡排序:相邻的两个元素进行比较,如果符合条件换位。
public static void bubbleSort(int[] arr)
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1; y++)//-x:让每一次比较的元素减少,-1:避免角标越界。
{
if(arr[y]<arr[y+1])
{
/*
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
*/
swap(arr,y,y+1);
}
}
}
}
抽取位置置换功能:
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
Java中已经定义好的一种排序方式。开发中,对数组排序。要使用该句代码:
Arrays.sort(arr); |
数组的查找操作
//定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
练习:有一个有序的数组,想要将一个元素插入到该数组中,
还要保证该数组是有序的。如何获取该元素在数组中的位置。
public static int getIndex_2(int[] arr,int key)
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min;
}
二维数组:
数组中的数组
二维数组[][]
格式1:
int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1角标位赋值78写法是:arr[0][1] = 78;
格式2:
int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
二维数组练习
定义一维数组:
int[] x; int x[];
定义二维数组:
int[][] y; int y[][]; int[] y[];
int[] x;
int[] y[];
a.
x[0] = y;//error
b.
y[0] = x;//yes
c.
y[0][0] = x;//error
d.
x[0][0] = y;//error
e.
y[0][0] = x[0];//yes
f.
x=y;//error