定义
要使用java语言的数组,一般经过三个步骤:声明数组,创建空间,建数组元素并赋值。
int[] x; //声明数组
x = new int[10]; //创建空间
//合并写法
int[] x=new int[10];
初始化
//静态初始化:创建+赋值
int[] a = {1,2,3,4,5};
int[0] a =1;
//动态初始化:包含默认初始化,数组也是引用类型,其元素相当于类的实例变量,因此数组一经分配空间,其中每个元素也按照实例变量同样的方式被隐式初始化。
int[] b = new int[10];
b[0] = 10; //b[0] = 10,此时没有被初始化的b[1]...b[9]都将默认赋值为0
利用循环对数组元素进行赋值
int i;
int[] a; //声明数组
a=new int[5]; //分配空间
for(i=1;i<5;i++){ //循环对数组元素进行赋值
a[i] = i;
}
for(i=0;i<a.length;i++){ //循环输出数组
System.out.print("a["+i+"]="+a[i]+"\t");
}
//输出结果
//a[0]=0 a[1]=1 a[2]=2 a[3]=3 a[4]=4
计算数组元素的和
int sum = 0;
int[] a = {1,2,3,4,5,6};
for(int i=0;i<a.length;i++){
sum =sum + a[i];
}
System.out.println(sum);
求数组元素最大值
int[] arrays = {1,2,3,4,5};
int max = arrays[0];
for(int i=0;i<arrays.length;i++){
if(arrays[i]>max){
max =arrays[i];
}
}
System.out.println(max);
反转数组:使用自定义的 reverse 方法将数组进行反转
static void reverse(int a[],int n){
int[] b = new int[n];
int j = n;
for(int i=0;i<n;i++){
b[j-1]=a[i];
j=j-1;
}
for(int k=0;k<n;k++){
System.out.println(b[k]);
}
}
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
reverse(arr,arr.length);
}
从键盘输入数组元素
import java.util.*;
public class Main {
public static void main(String[] args) {
int i;
int[] a; //声明数组
Scanner reader = new Scanner(System.in);
int n = reader.nextInt(); //输入一个数,代表数组容量
a=new int[n]; //分配空间
for(i=1;i<n;i++){ //循环对数组元素进行赋值
int x = reader.nextInt();
a[i] = x;
}
for(i=0;i<a.length;i++){ //循环输出数组
System.out.print("a["+i+"]="+a[i]+"\t");
}
}
}
/*输入数据:
6
1 4 5 6 7 7
输出结果:
a[0]=0 a[1]=1 a[2]=4 a[3]=5 a[4]=6 a[5]=7
声明方式
int[][] a; //声明整型数组a
a = new int[3][4]; //分配一块内存空间,供3行4列的整型数组a使用
//合并写法
int[][] a = new int[3][4];
初始赋值
int[][] a = {
{1,2,3,4,5,6},
{6,5,4,3,2,1},
{1,3,5,2,4,6}
};
数组的工具类java.util.Arrays
由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是"不用”而不是"不能"")
具有以下常用功能:
**给数组赋值:**通过fill方法。
**对数组排序:**通过sort方法,按升序。
**比较数组:**通过equals方法比较数组中元素值是否相等。
**查找数组元素:**通过binarySearch方法能对排序好的数组进行二分查找法操作。
import java.util.Arrays;
int[] a = {1,3,4,5,2};
//Arrays.toString(a)打印数组元素
Arrays.sort(a);//排序
System.out.println(Arrays.toString(a)); //[1, 2, 3, 4, 5]
Arrays.fill(a,2,4,0);//在第二个和第四个元素之间使用0来填充(左闭右开)
System.out.println(Arrays.toString(a)); //[1, 2, 0, 0, 5]
public static void main(String[] args) {
int[] array = {1,4,6,3,2,6,3,2,3};
int[] sort = sort(array);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
//临时变量
int temp = 0;
for(int i=0;i<array.length-1;i++){
boolean flag = false; //减少无意义的比较,降低复杂度
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag = true;
}
}
if(flag==false){
break;
}
}
return array;
}