七、JAVA中数组的常见问题与操作

七、JAVA中数组的常见问题与操作

7.1 常见问题

数组操作的常见问题:

  1. 索引越界异常
    数组的索引编号从0开始,一直到“长度-1”结束。
    若访问数组元素时,索引编号并不存在,则将会发生数组索引越界异常。
    ArrayIndexOutOfBoundsException
    原因:索引编号错误。
    解决:修改为存在的正确编号。
  2. 空指针异常
    数组为引用变量,所有的引用变量都可以赋值为null,代表其中什么也没有。
    数组必须进行new初始化,才能使用其中的元素。
    如果只赋值为null,没使用new创建,则会发生
    空指针异常
    NullPointerException
    原因:忘记new
    解决:补上new

7.2 获取数组的长度

获取数组的长度函数:

length

得到一个int类型的数字,代表数组的长度。
注意:数组一旦创建,在程序运行期间,长度不可改变。

package Code_20191027.Demo02;

public class Demo01ArrayLength{
    public static void main(String[] args) {
        int[] arrayA = {1,2,3,5,9,85,7,60};
        int lenA = arrayA.length;
        System.out.println("数组arrayA的长度为:" + lenA);

        System.out.println("--------------------------");
        // 注意这里问什么不报错,因为每一个new都是新创建一个引用。
        int[] arrayB = new int[3];
        System.out.println(arrayB);
        System.out.println(arrayB.length);
        arrayB = new int[5];
        System.out.println(arrayB);
        System.out.println(arrayB.length);
    }
}
数组arrayA的长度为:8
--------------------------
[I@470e2030
3
[I@3fb4f649
5

在这里插入图片描述

7.3 遍历输出

遍历数组:
对数组的每一个元素进行逐一、挨个处理。
默认处理方式为打印输出。

package Code_20191027.Demo02;

public class Demo02Array{
    public static void main(String[] args) {
        int[] arrayA = {1,2,3,4,5,6};
        int lenA = arrayA.length;
        for(int i = 0; i < lenA; i++){
            System.out.println(arrayA[i]);
        }
    }
}
1
2
3
4
5
6

7.4 最值

输出最值:
遍历求出最值

package Code_20191027.Demo02;

public class Demo03ArrayMaxMin{
    public static void main(String[] args) {
        int[] arrayA = {1,2,3,4,5,6};
        int lenA = arrayA.length;
        int maxA = arrayA[0];
        int minA = arrayA[0];
        for(int i = 1; i < lenA; i++){
            if(arrayA[i] > maxA){
                maxA = arrayA[i];
            }
        }
        System.out.println("最大值:" + maxA);
        for(int i = 1; i < lenA; i++){
            if(arrayA[i] < minA){
                minA = arrayA[i];
            }
        }
        System.out.println("最小值:" + minA);
    }
}
最大值:6
最小值:1

7.5 元素反转

元素反转:
本来样子:[1,2,3,4]
反转之后:[4,3,2,1]
要求:不能创建新数组。

分析:
1. 反转,即对称位置的元素交换。
2. 通常遍历数组只使用一个索引,现在表示对称位置则需使用两个索引。
3. 如何交换两个变量的值?
4. 什么时候停止交换?
package Code_20191027.Demo02;

public class Demo04ArrayTurn{
    public static void main(String[] args) {
        int[] arrayA = {1, 2, 3, 4, 5};
        int lenA = arrayA.length;
        for(int i = 0; i < lenA; i++){
            System.out.print(arrayA[i] + " ");
        }
        System.out.println("\n--------------");
        for(int min = 0, max = lenA - 1; min < max; min++, max--){
            int temp = arrayA[min];
            arrayA[min] = arrayA[max];
            arrayA[max] = temp;
        }
        for(int i = 0; i < lenA; i++){
            System.out.print(arrayA[i] + " ");
        }
        System.out.println("\n--------------");
    }
}
1 2 3 4 5
--------------
5 4 3 2 1
--------------

7.6 将数组当作方法的参数

数组作为方法的参数:
当调用方法的时候,向方法的小括号中传参,传递进去的其实是数组的地址值。

package Code_20191027.Demo02;

public class Demo05ArrayParam{
    public static void main(String[] args) {
        int[] arrayA = {1,2,3,4,5,6};
        printArray(arrayA);     // 传递近去的是array当中的地址值
    }
    public static void printArray(int[] array) {
        for(int i = 0; i < array.length; i++){  // 根据地址值取出数组长度
            System.out.println(array[i]);       // 根据地址值取出数组元素
        }
    }
}
1
2
3
4
5
6

7.7 数组作为方法的返回值

数组作为方法的返回值:
对于任意一方法,其可以有多个输入参数,但是只能有一个返回值。
若希望返回某一个方法中产生的多个结果,则使用数组类型。

package Code_20191027.Demo02;

public class Demo06ArrayReturn{
    public static void main(String[] args) {
        int[] arrResult = calculate(1, 156, 4158);
        System.out.println("总和" + arrResult[0]);
        System.out.println("平均值" + arrResult[1]);
    }
    public static int[] calculate(int a, int b, int c) {
        int sum = a + b + c;
        int avg = sum / 3;
        // 希望将两个值都返回
        /*int[]arrResult = new int[2];
        arrResult[0] = sum;
        arrResult[1] = avg;*/ 
        int[] arrResult = {sum, avg};
        return arrResult;
    }
}
总和4315
平均值1438

总结:任何数据类型都能作为方法的参数类型,或者返回值类型。
数组作为方法的参数,传递进去的是数组的地址值;
数组作为方法的返回值,传递进去的是数组的地址值。

本节内容就这些了, 欢迎关注我的微信公众号与我联系。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值