以此记录学习java(vscode)的日子 day08

day 08

 数组  

      表示一块连续的内存空间

      可以储存多个元素

      要求元素的数据类型一致

     

     

      数组定义的方式

       数据类型[] 数组名

       int[] arr;

       double[] arr;

       数据类型 数组名[]

       int arr[]

       double arr[]

       注意空格

       数组长度

         arr.length 是一个属性 不是方法

         必须在创建数组对象时就明确指定

         一旦确定,无法改变

         >=0 不能为负数

       数组在没有初始化的时候不能使用

       数组的下标从0开始 下标的最大值是length-1;

       组表的下标越界

         java.lang.ArrayIndexOutOfBoundsException          

       空指针异常

         java.lang.NullPointerException

       数组的默认值

        动态初始化后的数组会有默认值 0 0.0 null

        int          0

        double float 0.0

        char  \u0000

        boolean false

        String null

        默认值的类型

  数组初始化

     动态初始化

       初始化一个长度为3的数组 这里的new是在为数组开辟内存空间,所以长度必须要有

       可以大于等于0 但是一般大于零 不能为负数

       int[] arr1 =new int[3];

     静态初始化    

       int[] arr2 = new int[]{1,2,3,4,5};

       int[] arr2

       arr2 = new int[]{1,2,3,4,5};

       简化版的静态初始化

       int[] arr3 = {1,2,3,4,5};

       错误:不能指定数组长度

       arr2 = new int[4]{1,2,3,4,5};

       错误:不能分两行书写

       int[] arr2

       arr2 = {1,2,3,4,5};

      内存空间

        使用

          工具类

            注意导包

              java.util.Arrays 包含了操作数组的很多方法

              Arrays.copyOf(array,10);

              Arrays.toString(array);

              Arrays.sort(arr1);

              Arrays.fill(arr1,10)

    数组拷贝

       数组的长度不能更改,但如果有更多的元素存入数组,可以创建一个新的更大的数组,把旧的数组元素放进去,然后再放新数组

       java.lang.System中,有个方法 arraycopy可以实现复制数组中元素的功能。

       [0,1,2,3]

       [0,0,0,0,0,0,0,0,0,0]

       [0,1,2,0,0,0,0,0,0,0]

       arraycopy(

       数组,

       int,从哪里开始复制

       数组

       int 复制到哪里

       int 长度

       )


 

  练习

   求数组元素的平均值

  要求

   实现一个方法

   参数是int[]

   该方法可以计算出数组中所有数据的平均值

   并返回

   自己随机创建一个数组,并验证结果

import java.util.Arrays;
public class Main {
    
    public static void main(String[] args) {
        // 手动输入一个数组
        int[] Array = {23, 4, 67, 99, 120, 314, 576, 78, 90, 15};
        System.out.println("输入的数组: " + Arrays.toString(Array));

        // 计算平均值
        double average = Average(Array);
        System.out.println("平均值: " + average);
    }
    
    // 计算平均值
    public static double Average(int[] array) {
        if (array == null || array.length == 0) {
            return 0.0; 
            // 如果数组为空或长度为0,返回0.0
        }       
        double sum = 0;
        //遍历数组
        for (int i = 0; i < array.length; i++) {
            int num = array[i];
            System.out.print("sum="+sum+"+"+num);
            sum += num;
            System.out.println("="+sum);
        }
        return (double) sum / array.length;
    }
}

    要求

   实现一个方法

   参数是int[]

   该方法可以计算出数组中所有数据的最大值

   并返回

   自己随机创建一个数组,并验证结果

import java.util.Arrays;
public class Main01 {
    
    public static void main(String[] args) {
        int[] Array={1,22,3,45,66,8,4,10};
        System.out.println("输入的数组: " + Arrays.toString(Array));

        int m = Max(Array);
        System.out.println("输入数组的最大值: " + m);

    }
    //实现一个方法 求数组中元素的最大值
    public static int Max(int[] array) {
        //声明一个变量 Max 用于接收数组中的最大值
        //方法一
        //遍历数组
        // int max=array[0];
        // for (int i = 1; i < array.length; i++) {            
        //     if(array[i]>max){
        //     max=array[i];
        //方法二
        Arrays.sort(array);
        int max=array[array.length-1];

    //     }
    //  }
        return max;

       
    }
}

   定义一个方法 传递一个数组给它 将这个数组长度扩大到原来的2倍,并返回

import java.util.Arrays;
public class Main02 {
    public static void main(String[] args) {
        int[] oldArray={1,22,3,45,66,8,4,100,200};
        System.out.println("输入的数组oldArray: " + Arrays.toString(oldArray));
        int[] newArray = expandArray(oldArray);
        System.out.println("扩展后的数组newArray: " + Arrays.toString(newArray));
        
    }
    public static int[] expandArray(int[] oldarray) {
        // 创建一个新的数组,长度是原数组的两倍
        int[] newArray = new int[oldarray.length * 2];
        // 将原数组中的元素复制到新数组中
        System.arraycopy(oldarray, 0, newArray, 0, oldarray.length);
        return newArray;
 }
}

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值