一、数组的声明和创建
二、三种初始化
三、数组的使用
四、二维数组
五、Arrays类
一、数组的声明和创建
-
int[] nums; 声明数组
nums=new int[10];//创建数组,10个元素
-
int[] nums=new int[10]; 创建数组
package com.hsms.array;
public class ArrayDemo {
public static void main(String[] args) {
/*int[] nums;//声明数组
nums=new int[10];//创建数组,10个元素*/
int[] nums=new int[10];//创建数组,数组中有10个元素,开辟空间
int sum=0;
for (int i = 0; i <10 ; i++) {//用for循环给数组赋值,将1-10赋给数组
nums[i]=i+1;
}
for (int i = 0; i <nums.length ; i++) {//求数组中的数值之和
sum+=nums[i];
}
System.out.println(sum);
}
}
结果:
55
二、三种初始化
数组的静态初始化
int[] a={1,2,3,4,5,6};//数组,静态初始化;创建+赋值
数组的动态初始化
int[] b=new int[10];//动态初始化,包括默认初始化
数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
package com.hsms.array;
public class ArrayDemo1 {
public static void main(String[] args) {
int[] a={1,2,3,4,5,6};//数组,静态初始化;创建+赋值
int[] b=new int[10];//动态初始化,包括默认初始化
b[0]=1;
b[1]=10;
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);
}
}
运行结果:
1
10
0
小结:
数组是相同数据类型(数据类型可以为任意类型)的有序集合数组也是对象。
数组元素相当于对象的成员变量数组长度的确定的,不可变的。如果越界,则报*:ArrayIndexOutofBounds*
三、数组的使用
-
For-Each循环
-
数组作方法入参
-
数组作返回值
下面为功能为数组的反转的方法。
package com.hsms.array;
public class ArrayReverse {
public static void main(String[] args) {
int[] arrays={10,9,8,7,6,5};
printArray(arrays);
System.out.println("=====反转后=====");
int[] reverse = reverse(arrays);
printArray(reverse);
}
public static int[] reverse(int[] arrays){
int[] result=new int[arrays.length];//将arrays的长度给result,result就有了长度
for (int i = 0,j=result.length-1; i <arrays.length; i++,j--) {//反转
result[j]=arrays[i];
}
return result;
}
public static void printArray(int[] arrays){//打印数组;数组作方法的参数
/*for (int i : arrays) {//增强for循环
System.out.print(arrays[i]+" ");
}//局限性大*/
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+" ");
}
System.out.println();
}
}
运行结果:
10 9 8 7 6 5
=====反转后=====
5 6 7 8 9 10
四、二维数组
- 如果arrays为二维数组,则arrays.length为数组的行数,arrays.length[i]为数组的列数。
package com.hsms.array;
public class MulArray {//多维数组
public static void main(String[] args) {
int[][] arrays={{1,2},{3,4},{5,6},{7,8}};
/*System.out.println(arrays.length);//数组的行数
System.out.println(arrays[0].length);//数组的列数*/
for (int i = 0; i < arrays.length ; i++) {
for (int j = 0; j <arrays[i].length ; j++) {
System.out.print(arrays[i][j]+" ");
}
}
}
}
运行结果:
1 2 3 4 5 6 7 8
五、Arrays类
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是"不用"而不是“不能")
具有以下常用功能:
◆给数组赋值:通过fill方法。
◆对数组排序:通过sort方法,按升序。
◆比较数组:通过equals方法比较数组中元素值是否相等。
◆查找数组元素: 通过binarySearch方法能对排序好的数组进行二分查找法操作。
1.fill方法
-
Arrays.fill(a,0); fill方法,要填充的数组,val:要填充的值;填充完需要打印,才有结果
System.out.println(Arrays.toString(a));
例子:全部填充为0
-
Arrays.fill(a,2,4,0); fill方法,下角标[fromIndex,toIndex)左闭右开
System.out.println(Arrays.toString(a));
例子:将在[2,4)间的索引填充0 (Line 41)
2.sort方法
-
Arrays.sort(a); sort方法排完序后,需要再打印(Line 35)
System.out.println(Arrays.toString(a));
3.equals方法
-
System.out.println(Arrays.equals(b,c));
equals方法,两个数组以相同的顺序包含相同的元素则返回true,否则为false
例子:比较b,c数组(Line 43)
4.binarySearch方法
-
System.out.println(Arrays.binarySearch(a,2)); binarySearch方法,数组,查找值,返回索引值
使用binarySearch方法需要先排序
例子:二分法查找key值为2的索引(Line 50)
-
System.out.println(Arrays.binarySearch(a,2,5,6645)); 左闭右开
例子:二分法查找索引在[2,5)间的key值的索引(Line 52)
package com.hsms.array;
/**
* @author 幻世蛮殇
*/
import java.util.Arrays;
public class ArrayDemo2 {
//Array类
public static void main(String[] args) {
int[] a={1,2,54685,545,6645,42};
//System.out.println(a);//哈希code
//printArrays(a);//自己的打印方法
Arraystest(a);
}
public static void printArrays(int[] a){//自己的打印数组方法
for (int i = 0; i < a.length ; i++) {
if (i==0){//判断是否为第一个数
System.out.print("["+a[i]+", ");
} else if (i==a.length-1){//判断是否为是否为最后一个数
System.out.print(a[i]+"]");
}else {
System.out.print(a[i]+", ");
}
}
}
public static void Arraystest(int[] a){
int[] b={1,2,3,4};
int[] c={4,3,2,1};
int[] d={1,2,3,4};
//Arrays类中的toString方法,打印数组,将数组以字符串的形式返回
//System.out.println(Arrays.toString(a));
Arrays.sort(a);//sort方法排完序后,需要再打印
//printArrays(a);
//Arrays.fill(a,0);//fill方法,要填充的数组,val:要填充的值;填充完需要打印
System.out.println("数组a:");
System.out.println(Arrays.toString(a));
Arrays.fill(a,2,4,0);//fill方法,下角标[fromIndex,toIndex)
System.out.println("将在[2,4)间的索引填充0:");
System.out.println(Arrays.toString(a));
System.out.println("b与c两数组是否相等:");
System.out.println(Arrays.equals(b,c));//equals方法,两个数组以相同的顺序包含相同的元素则返回true
System.out.println("b与d两数组是否相等:");
System.out.println(Arrays.equals(b,d));
Arrays.sort(a);
System.out.println("使用binarySearch方法需要先排序:");
System.out.println(Arrays.toString(a));
System.out.println("二分法查找key值为2的索引为:");
System.out.println(Arrays.binarySearch(a,2));//binarySearch方法,数组,查找值,返回索引值
System.out.println("二分法查找索引在[2,5)间的key值的索引为:");
System.out.println(Arrays.binarySearch(a,2,5,6645));//左闭右开
}
}
运行结果:
数组a:
[1, 2, 42, 545, 6645, 54685]
将在[2,4)间的索引填充0:
[1, 2, 0, 0, 6645, 54685]
b与c两数组是否相等:
false
b与d两数组是否相等:
true
使用binarySearch方法需要先排序:
[0, 0, 1, 2, 6645, 54685]
二分法查找key值为2的索引为:
3
二分法查找索引在[2,5)间的key值的索引为:
4