Java学习15
数组使用
普通循环
例
int[] arrays={1,2,3,4,5};
//打印全部的数组元素
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
System.out.println("----------------");
//计算所有元素的和
int sum=0;
for (int j = 0; j < arrays.length; j++) {
sum+=arrays[j];
}
System.out.println("和为"+sum);
System.out.println("----------------");
//查找最大元素
int max=arrays[0];
for (int k = 0; k < arrays.length; k++) {
if(arrays[k]>max){
max=arrays[k];
}
}
System.out.println("最大值为"+max);
结果如下:
For-Each循环
输入arrays.for
即可
输出时如下即可:(无需下标)
System.out.println(array);
数组作方法入参&数组作返回值
例1(打印数组元素)
int[] arrays={1,2,3,4,5};
PrintArray(arrays);
}
public static void PrintArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]+" ");
}
结果为:
例2 (反转数组)
int[] arrays = {1, 2, 3, 4, 5};
int[] reverse = reverse(arrays);
PrintArray(reverse);
}
//反转数组
public static int[] reverse(int[] arrays) {
int[] result = new int[arrays.length];
//反转
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 = 0; i < arrays.length; i++) {
System.out.print(arrays[i] + " ");
}
结果为:
多维数组
多维数组可以看成是数组的数组,比如二维就是一个特殊的一维数组,其每个元素都是一个一维数组。
二维数组
int a[][] = new int[2][5];
解析:以上二维数组a可以看成一个两行五列的数组。
(思维导图)
思考:多维数组的使用?
例
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
原先的一维数组arr[ ]
,其中a[ ]
中保存的只是一个元素,但变成了arr[ ][ ]
之后,其所存储的不再是单一的一个元素,而是一个数组,该数组亦可以保存元素。
例(数组与方法并用)
public static void main(String[] args) {
//[4][2]
/*
1,2 array[0]
2,3 array[1]
3,4 array[2]
4,5 array[3]
*/
int[][] array ={{1,2},{2,3},{3,4},{4,5}};
PrintArray(array[0]);
}
//打印数组元素
public static void PrintArray(int[] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i] + " ");
}
}
如此可得结果为:
若要得到具体的一个元素,需要作出改动
便是具体找出数组的行与列,输出方式如下:
int[][] array ={{1,2},{2,3},{3,4},{4,5}};
System.out.println(array[0][1]);
则会得到:
n维数组实质上是数组嵌套数组,即点线面的差别。
我们可以通过测试,求得数组所占的空间,便可清晰。
int[][] array ={{1,2},{2,3},{3,4},{4,5}};
System.out.println(array.length);
System.out.println(array[0].length);
结果为:
通过循环嵌套来输出数组元素:
int[][] array ={{1,2},{2,3},{3,4},{4,5}};
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
结果为:
Arrays类
- 数组的工具类java.util.Arrays
- 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作
- 查看 JDK帮助文档
- Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)。
- 具有以下常用功能:
- 给数组赋值:通过fill方法。
- 对数组排序:通过sort方法,按升序。
- 比较数组:通过equals方法比较数组中元素是否相等。
- 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
举例
例
public static void main(String[] args) {
int[] a={1,6,8,9,7,4,55,60,66};
System.out.println(a);//[I@1b6d3586 哈希code
System.out.println(Arrays.toString(a));
printArray(a);
}
public static void printArray(int[] a){
for (int i = 0; i < a.length; i++) {
if(i==0){
System.out.print("[");
}
if(i== a.length-1){
System.out.print(a[i]+"]");
}else{
System.out.print(a[i]+", ");
}
}
}
效果如下:
方法1:sort方法
使用该工具类可对数组进行升序排序
public static void main(String[] args) {
int[] a={1,6,8,9,7,4,55,60,66};
Arrays.sort(a);//*数组进行排序:升序
System.out.println(Arrays.toString(a));//*
}
public static void printArray(int[] a){
for (int i = 0; i < a.length; i++) {
if(i==0){
System.out.print("[");
}
if(i== a.length-1){
System.out.print(a[i]+"]");
}else{
System.out.print(a[i]+", ");
}
}
}
结果如下:
方法2:fill方法
使用该方法可对数组元素进行填充
public static void main(String[] args) {
int[] a={1,6,8,9,7,4,55,60,66};
Arrays.fill(a,0);//数组填充
System.out.println(Arrays.toString(a));
}
public static void printArray(int[] a){
for (int i = 0; i < a.length; i++) {
if(i==0){
System.out.print("[");
}
if(i== a.length-1){
System.out.print(a[i]+"]");
}else{
System.out.print(a[i]+", ");
}
}
}
结果如下:
也可以选择进行区间填充,如: