----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. 数组的定义
同一类型数据的集合既容器,数组也是对应在内存中的一段存储空间,切必须是相同数据类型。
数组中元素会从0开始编号,用以方便操作。
数组的定义格式如下:
//格式一:
//元素类型[] 数组名 = new 元素类型[元素个数或长度]
int[] arr = new int[5];//定义一个长度为5的整数数组
//格式二:
//元素类型[] 数组名 = new 元素类型[元素,元素,元素…]
int[] arr = new int[]{1,2,4,5,6};
int[] arr = {1,2,4,5,6};//同样定义一个长度为5的整数数组
在定义数组时其数据类型的不同相对应的初始值也有所不同,对应如下:
byte,short,int,long默认初始值为0
float,double 默认初始值为0.0
char 默认初始值为’\u0000’
boolean 默认初始值为false
引用数据类型 默认初始值为null
2. 数组元素的访问
数组我们通常[下标]访问数组元素,越界访问(小于0或者大于等于下标值),都会发生运行异常。
在java中可以使用.length属性获取数组对象长度如下:
int[] y = new int[]{ 1 , 2 , 3};
//下标 0 1 2
System.out.print(y.length); //长度为3
System.out.print(y(3)); //越界异常
3. 数组的复制及Arrays类
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的,常用方法如下:
boolean equals(array1,array2);比较两个数组是否相等
void sort(array);对数组array的元素进行升序排列
copyof(array,length);把数组array复制成一个长度为length的新数组
String toString(array);将数组array转换成一个字符串
对于复制数组来讲,我们都希望改变其中一个数组的元素时不会影响另外数组元素的值,因此我们需要其具有隔离性,代码如下:
public static void main(String[] args) {
String[] arr = new String[]{"a","1","1","w"}; //声明一个数组并初始化一个长度为4的数组
String[] arr1= new String[arr.length]; //声明一个与长度与arr数组相同的数组
for(int x=0 ;x<arr.length;x++){ //for循环迭代复制数组
arr1[x]=arr[x]; //在循环的过程中,是arr1数组元素值与arr数组元素值相同
}
arr1[1]="wo"; //改变arr1中的元素值
System.out.println(Arrays.toString(arr)); //arr数组无变化
System.out.println(Arrays.toString(arr1)); //arr1数组改变了
}
4. 数组的内存
int[] x = newint[]{ 1 , 2 , 3};
x在栈内存中引用的为堆内存中数组的首地址,即栈内存中只是存放数组空间在堆内存中的首地址,在堆内存中定义的实体是用于封装数据的,且都有初始化值但当堆内存中的实体无人引用时,java将启动垃圾回收机制进行处理,会不定时执行,相对于栈内存来说,栈内存会自动释放无用的数据
2. 数组的操作
(1) 获取最值
public static int getMax(int[] m) { //定义最值方法
int max = m[0]; //设置max为首元素
for (int i = 1; i < m.length; i++) {//遍历数组元素
if (m[i] > max) //将max与其后的数组元素逐一比较大小,只要大于max就将该下标值得数组元素赋予max
max = m[i]; //数组元素赋予max
}
return max; //返回max
}
(2) 排序
选择排序
public static void main(String[] args) {
int[] x = new int[] { 110, 2, 3, 4, 5, 6, 7, 8, 2, 31, };
getOrder(x);
}
// 选择排序,内循环一次,最值出现在头角标位置上
public static void getOrder(int[] m) {
for (int i = 0; i < m.length - 1; i++) { //从第一个元素开始比较最后一位无需比较故省略
for (int j = i + 1; j < m.length; j++) {
if (m[i] > m[j]) { //从下标i的下一位逐一与m[i]比较大小,满足条件会执行下列语句
int a = m[j]; //该段语句实现了m[i]与m[j]值得互换
m[j] = m[i];
m[i] = a;
}
}
System.out.print(m[i] + "\t");
}
}
使用Arrays类的sort方法即可对数组进行升序排列,如下
public static void main(String[]args){
int[] in = new int[]{7,9,3,4,5,6}; //声明一个数组
Arrays.sort(in); //使用sort方法对数组进行排序
System.out.println("排序后的数组:"+Arrays.toString(in)); //输出排序后的数组
}
6. 二维数组
二维数组定义
格式一:int[][] arr = newint[2][3];
格式二:int[][] arr = newint[2][];
格式三:int[][] arr ={{2,3,4}{5,6,7}};
注:int[] y[]同样也为二维数组,较少使用。
----------- android培训 、 java培训 、 java学习型技术博客、期待与您交流! ------------