java基础-数组的定义,静动态初始化,数组元素的相关操作、数组的内存图

一、什么是数组

数组指的是一种容器,可以用来存储同种数据类型的多个值。

数组容器在存储数据的时候,需要结合隐式转换考虑。

例如:int类型的数组容器,只能存储byte、short、int类型的数据。(byte<short<int<long<float<double)

例如:double类型的数组容器,可以存储byte、short、int、long、float、double类型的数据。

建议数组容器中存储的数据类型保持一致。

二、数组的初始化

初始化,就是在内存中,为数组容器开辟一块空间,并将数据存入容器中的过程。

1、静态初始化

格式1:不简写

数据类型[]  数组名=new 数据类型 {元素1,元素2,元素3...};

格式2:简写格式

数据类型[] 数组名={元素1,元素2,元素3};

2、动态初始化

格式:动态初始化的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值。

数据类型[] 数组名=new 数据类型[数组的长度];

例如:String[] arr=new String[50];

3、数组动态初始化和静态初始化的特点

静态初始化:由系统给出默认的初始化值数组长度

动态初始化:手动指定数组长度,由系统给出默认初始化值

4、默认初始化值

整数类型:默认值是0

小数类型:默认初始化值0.0

字符类型:默认初始化值'\u0000' 

布尔类型:默认初始化值false

引用数据类型:默认初始化值null。

静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。

从元素是否明确的角度看,如果数组个数不明确,推荐使用动态初始化;如果元素明确,则直接使用静态初始化。

三、数组元素的操作

String[] arr=new String[50];

1、添加数组元素

arr[0]="张三";
arr[1]="李四";

2、删除数组元素

有一个数组,需要删除其中的元素。这时需要新建一个数组,在元素的数组中遍历元素,再通过条件控制语句将符合条件的元素添加到新数组中。

3、修改数组元素

通过下标索引修改

4、查询数组元素。

通过下标索引定位查询

System.out.print(arr[0]);
//结果:张三

如果查询的索引在数组中还没被定义,那么就会打印默认值

5、便利数组元素

int[] arr={1,2,3,4,5};
//遍历数组元素
for (int i=0;i<arr.length;i++){
    System.out.print(" "+arr[i]);
}

6、数组元素之和

int[] arr={1,2,3,4,5};
//数组元素之和
int sum=0;
for (int i=0;i<arr.length;i++){
    sum=sum+arr[i];
}
System.out.println("元素之和="+sum);

7、求数组元素中的最大值

int[] arr={1,2,3,4,5};
//求数组元素中最大值
int max=arr[0];
for (int i=1;i<arr.length;i++){
if (max<arr[i]){
    max=arr[i];
    }
}
System.out.println("最大值="+max);

8、求平均数

int[] arr=new int[10];
/**
*随机生成10个1~100的数,求其中的最大值、平均值、和比平均数小的个数
**/
int sum=0; Random random=new Random(); for (int i=0;i<arr.length;i++){ int number= random.nextInt(100)+1; System.out.print(" "+number); arr[i]=number; sum=sum+arr[i]; } System.out.println("所有数据之和="+sum); //平均数 int avg=sum/arr.length; System.out.print("平均数为="+avg); //比平均数小的个数 int count=0; for (int i=0;i<arr.length;i++){ if (arr[i]<avg){ count=count+1; } } System.out.println("比平均数少的有"+count+"个");

9、交换收尾索引对应的元素

int[] arr = {1, 2, 3, 4, 6};
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}
for (int x = 0; x < arr.length; x++) {
    System.out.print(arr[x] + "");
}

10、随机打乱数组中所有数据的顺序

int[] arr = {1, 2, 3, 4, 5};
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
    //随机生成一个元素索引
    int j = random.nextInt(arr.length);
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

四、数组的内存图

栈:方法在运行时使用的内存,比如main方法运行,进入方法中执行。

堆:只要new创建出来的,一定是在堆里面开辟了一个小空间,如果new了多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据。

 

posted on 2023-05-04 20:31  ×不知该怎么√  阅读(712)  评论(0编辑  收藏  举报

导航