目录
前言
一、数组的创建以及使用
1. 创建数组
2.数组的遍历
3.数组练习
3.1交换两个数
3.1冒泡排序
3.2二分查找
二、Arrays类
三、多维数组
总结
前言
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。具体的使用如以下几个方面。
一、数组的创建以及使用
1. 创建数组
Java语言使用new来创建数组。使用方法如下
import java.util.Arrays;public class arraydemo {public static void main(String[] args) {long[] a;//System.out.println(a);变量 'a' 可能尚未初始化a=new long[10];a[9]=1;System.out.println(Arrays.toString(a));long[] b={1,2,34,4,3,5,6,6};System.out.println(Arrays.toString(b));long[] c;//c={1,23,3,4,5,6,7}; 此处不允许数组初始值设定项c=new long[]{1,23,4,5,6,7,8};System.out.println(Arrays.toString(c));long[] d=c;d[1]=2;System.out.println(Arrays.toString(d));}
}
2.数组的遍历
Java对于数组的遍历有了新的方法,它能在不使用下标的情况下遍历数组。使用方法如下:
public class TestArray {public static void main(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};// 打印所有数组元素for (double element: myList) {System.out.println(element);}}
}
3.数组练习
3.1交换两个数
代码如下
public class SwapDemo {private static void swap(double[] array, int a ,int b){double t=array[a];array[a]=array[b];array[b]= t;}public static void main(String[] args) {double a=1.0;double b=100.0;double[] array={a,b};System.out.println(a);System.out.println(b);swap(array,0,1);System.out.println(array[0]);System.out.println(array[1]);}
}
3.1冒泡排序
代码如下
public class BubbleSort {private static void swap(long[] array,int a,int b){long t=array[a];array[a]=array[b];array[b]= t;}public static void bubblesort(long[] array){for(int i=0;i<array.length-1;i++){for(int j=0;j<array.length-1-i;j++){if(array[j]>array[j+1]){swap(array,j,j+1);}}}}public static void main(String[] args) {long[] a={9,3,7,8,5,4,3,2,8};bubblesort(a);for (long l : a) {System.out.println(l);}}
}
3.2二分查找
代码如下
import java.util.Arrays;public class BinarySearch {public static int binarySearch(long[] array,long key){int left=0,right= array.length-1;while(left<=right){int search=(left+right)/2;if(array[search]<key){left=search+1;}if(array[search]>key){right=search-1;}if(array[search]==key){return search;}}return -1;}public static void main(String[] args) {long[] array = {1, 4, 3, 2, 5, 7, 6, 9, 8, 1, 11, 10};BubbleSort.bubblesort(array);System.out.println(Arrays.toString(array));System.out.println(binarySearch(array,5));}
}
二、Arrays类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
- 对数组排序:通过 sort 方法。
- 查找数组元素:通过binarySearch方法
- 比较数组:通过 equals 方法比较数组中元素值是否相等。
- 填充数组:通过 fill 方法
- 拷贝数组:通过 copyOf 方法
- 转换成字符串:通过 toString 方法
具体的使用方法如下所示
import java.util.Arrays;public class UseArray {public static void main1(String[] args) {long[] array={1,3,6,8,5,9,4};Arrays.sort(array,1,5);for (long l : array) {System.out.println(l);}}public static void main2(String[] args) {long[] array={1,2,3,4,5,6,7,8,9,10};System.out.println(Arrays.binarySearch(array, 5));}public static void main3(String[] args) {long[] array1={1,2,3,4,5,6,7,8,9,10};long[] array2={1,2,3,4,5,6,7,8,9,10};System.out.println(Arrays.equals(array1, array2));//如果使用==则是说明两边是否指向同一个对象}public static void main4(String[] args) {long[] array={1,2,3,43,43,5,23};Arrays.fill(array,5);for (long l : array) {System.out.println(l);}}public static void main5(String[] args) {long[] array={1,2,3,4,5,65,7,4,67};long[] longs = Arrays.copyOf(array, 6);for (long l : longs) {System.out.println(l);}System.out.println("-----------------------------------------");long[] longs1 = Arrays.copyOfRange(array, 2, 5);for (long l : longs1) {System.out.println(l);}System.out.println("-----------------------------------------");long[] longs2 = Arrays.copyOfRange(array, 2, 11);for (long l : longs2) {System.out.println(l);}//long[] longs3 = Arrays.copyOfRange(array, -1, 5);}public static void main(String[] args) {long[] array={1,2,3,4,5,6,7,78};System.out.println(array);String s = Arrays.toString(array);System.out.println(s);}
}
其中部分方法的实现如下
1.sort(略)
2.binarySearch(略)
3. equals(略)
4. fill(略)
5.copyOfRange(没有写copyOf)
import java.util.Arrays;public class ArrayCopyOf {public static long[] copyofRange(long[] src,int newlength,int fromindex ,int toindex){long[] dest=new long[newlength];for(int i=0;i< Math.min(Math.min(newlength, src.length-fromindex),toindex-fromindex+1);i++){dest[i]=src[i+fromindex];}return dest;}public static void main(String[] args) {long[] array={1,2,3,4,5,6,7,8,9};System.out.println(Arrays.toString(copyofRange(array, 12,3,15)));}
}
6.toString
public class ToString {public static String tostring(long[] array){String r ="[";for (int i = 0; i < array.length-1; i++) {r+=array[i]+",";}if(array.length>=1){r+=array[array.length-1];}r+="]";return r;}public static void main(String[] args) {long[] array={};System.out.println(array);System.out.println(tostring(array));}
}
三、多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
基本使用如下
import java.util.Arrays;public class MultiArray {public static void main(String[] args) {long[][] a={{1,2,3},{4},{5,6,7,8,9},null,{10}};long[][] array=new long[][]{new long[]{1,2},new long[]{1,2,3,4},new long[]{1,2,3}};String[][] s=new String[2][];s[0] = new String[2];s[1] = new String[3];s[0][0] = "Good";s[0][1] = "Luck";s[1][0] = "to";s[1][1] = "you";s[1][2] = "!";System.out.println(a[1][0]);System.out.println(Arrays.toString(array[1]));System.out.println(Arrays.toString(s[0]));System.out.println(Arrays.toString(s[1]));}
}
总结
体会Java数组和C中的数组不一样的地方。