学习数组,需要弄清楚数组定义、内存分配及特点、操作常见问题、常见操作、数组嵌套等概念和程序实现。
1. 定义:同一种数据类型的集合,其实数组就是一个容器
2. 好处:数组有索引(下标从0开始),方便操作
3. 格式:元素类型 [] 数组名 = new 元素类型[元素个数或者数组长度]
元素类型 [] 数组名 = new 元素类型[]{元素1,元素2...}
4. 例如:
int [] arr = new int[10]
int [] arr = new int[]{1,2,3,4,5,6,7}
int [] arr = {1,2,3,4,5,6}
数组常见操作:
最基本的存和取(对下标的操作)
遍历:
arr.length 将获取数组的长度(数组的长度)
求最大值最小值(设置临时变量遍历数组,找到最值元素的下标)
注意:在求最值时候的陷阱,例如求最大值,将临时变量初始化为0,如果数组
中元素全部小于0的话,结果就是不准确的,因此求最大最好初始化为最
小值。。。或者直接使用数组角标来做参考最好
数组排序(选择、冒泡):
int[] arr = new int[]{1,2,3,4.......}
1. 选择排序
for(int i=0;i<arr.length-1;i++)
{
for(int j=i;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
arr[i] = arr[i]^arr[j];
arr[j] = arr[i]^arr[j];
arr[i] = arr[i]^arr[j];
}
}
}
2. 冒泡排序
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;i<arr.length-i-1;j++)
{
if(arr[j]<arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
Java数组的性能问题:
在选择排序中,进行了太多次的数据交换,这样会很浪费,可以选择使用变量记录最小(大)
值的位置,然后当完成一次排序的时候,直接将标记的元素和起始元素对调
for(int x=0;x<arr.length-1;x++)
{
int index = x;
for(int y=x+1; y<arr.length;y++)
{
if(arr[index]<arr[y])
{
index = y;
}
}
if(index != x)
{
swap(arr,x,y);//交换x和y的值
}
}
二维数组跟一维数组一样,举一反三即可!!!
格式:
int [][] arr = new int[3][4];
注意:二维数组 必须指定第一维的长度
int [][] arr = new int[3][]
arr[0] = new int[3]
arr[1] = new int[4]
arr[2] = new int[5]
arr.length == 3
arr[1].length == 4
int [][] arr1 = {{5,6},{3,4},{1,2}}
数组常见问题:
数组越界、引用没有指向任何地方时,将会引发空指针异常
本文出自 “Keyman” 博客,请务必保留此出处http://keyman.blog.51cto.com/9807984/1676574
原文地址:http://keyman.blog.51cto.com/9807984/1676574