数组应该怎么用?

简介: 数组应该怎么用?

前言

为什么要使用数组,因为使用数组可以避免过于的冗杂,方便美观,简洁

一、数组是什么?

可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。

二、数组的创建

1.数组的创建:

T[] 数组名 = new T[N];

T:表示数组中存放元素的类型

T[]:表示数组的类型

N:表示数组的长度

2.数组的初始化

代码如下(示例):

int[] array1 = new int[10]; // 创建一个可以容纳10个int类型元素的数组
double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组
String[] array3 = new double[3]; // 创建一个可以容纳3个字符串元素的数组

***注意:***如果数组中存储元素类型为引用类型,默认值为null。

2.1动态初始化:创建数组,直接数组中元素的个数

int[] array = new int[10];

2.2 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定.

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};

注意事项:

1.静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。

2.静态初始化时, {}中数据类型必须与[]前数据类型一致。

3.静态初始化可以简写,省去后面的new T[]。

静态和动态初始化也可以分为两步,但是省略格式不可以。

int[] array1;
array1 = new int[10];
int[] array2;
array2 = new int[]{10, 20, 30};
// 注意省略格式不可以拆分, 否则编译失败
// int[] array3;
// array3 = {1, 2, 3};

如果没有对数组进行初始化,数组中元素有其默认值

如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,

2.3数组中元素的访问:

数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。

int[]array = new int[]{10, 20, 30, 40, 50};
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);

还可以进行修改其中的数值

array[0] = 100;
System.out.println(array[0]);

三.数组的遍历

1.逐个打印

如上图一样

2.使用for循环

int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}

3.使用for -each

int[] array = {1, 2, 3};
for (int x : array) {
System.out.println(x);
}

四.二维数组

1.语法:

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };
int[][] arr = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

2.遍历

int[][] arr = {
                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12}
        };
        for (int x[]:arr) {
            System.out.println(Arrays.toString(x));
        }
    }

用Arrays.toString可以很快遍历出来

五.数组的一些常用方法

1.数组转换字符串

int[] arr = {1,2,3,4,5,6};
String newArr = Arrays.toString(arr);
System.out.println(newArr);

2.数组拷贝

        int[] arr = {1, 2, 3, 4, 5};
        int[] newarr = new int[3];
        newarr = Arrays.copyOf(arr, arr.length);
        System.out.println(Arrays.toString(newarr));

3.二分查找

首先先进行对数组排序

public static int binarySearch(int[]arr,int toFind) {
            int left = 0;
            int right = arr.length - 1;
            while (left <= right) {
                int mid = (left + right) / 2;
                if (toFind < arr[mid]) {// 去左侧区间找
                    right = mid - 1;
                } else if (toFind > arr[mid]) {// 去右侧区间找
                    left = mid + 1;
                } else {// 相等, 说明找到了
                    return mid;
                }
            } //
            return -1;
        }

4.冒泡排序

public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 1; j < arr.length-i; j++) {
                if (arr[j-1] > arr[j]) {
                    int tmp = arr[j - 1];
                    arr[j - 1] = arr[j];
                    arr[j] = tmp;
                }
            }
        } 
    }

当然了,Arrays.sort更便捷

5.数组逆序

 public static void reverse(int[] arr) {
        int left = 0;
        int right = arr.length - 1;
        while (left < right) {
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;

        }
    }

总结

好了,今天关于数组的博客到这里结束了,欢迎大佬指正,希望大佬们能给个三连,在评论区畅所欲言啊。

目录
相关文章
|
9月前
|
存储 API C++
【Qt 信号槽】深入探索 Qt 信号和槽机制中的引用传递“ (“A Deep Dive into Reference Passing in Qt Signal and Slot Mechanism“)
【Qt 信号槽】深入探索 Qt 信号和槽机制中的引用传递“ (“A Deep Dive into Reference Passing in Qt Signal and Slot Mechanism“)
789 0
|
机器学习/深度学习 并行计算 Ubuntu
系统类配置(二)【深度学习装机详细教程-ubuntu16.04下安装cuda9.0+nvidia-384+cudnn7.1.4+tensorflow1.9。】(下)
系统类配置(二)【深度学习装机详细教程-ubuntu16.04下安装cuda9.0+nvidia-384+cudnn7.1.4+tensorflow1.9。】(下)
228 0
|
9月前
|
机器学习/深度学习 算法
时间复杂度和空间复杂度
时间复杂度和空间复杂度
47 1
|
9月前
|
人工智能 Java 编译器
初识JAVA
初识JAVA
56 1
|
9月前
|
存储 并行计算 编译器
向量化代码实践与思考:如何借助向量化技术给代码提速
在不堆机器的情况下,要想使代码完全发挥出硬件性能,就需要做加速。其中比较常见的操作是并发处理,本文将深入向量化计算技术,为大家讲解SIMD指令,以及如何写出规范的可向量化的代码。
|
9月前
|
应用服务中间件 nginx
localhost和127.0.0.1的区别
【4月更文挑战第20天】
531 0
localhost和127.0.0.1的区别
github镜像加速方案整理
github镜像加速方案整理
1720 1
|
开发工具
新人乘风者礼品兑换指南
仅限2023年11月15日(含11月15日)后入驻博主用于兑换礼品,此前完成入驻的博主按原邮寄方式进行。
4471 9
|
存储 Cloud Native 大数据
开发者社区连续打卡抽奖活动规则
庆祝“探索云世界”上线,各子社区推出连续打卡抽奖活动
26389 32
|
开发者
第十期乘风伯乐奖--寻找百位乘风者伯乐,邀请新博主入驻即可获奖
乘风伯乐奖,面向阿里云开发者社区已入驻乘风者计划的博主(技术/星级/专家),邀请用户入驻乘风者计划即可获得乘风者定制周边等实物奖励。本期面向阿里云开发者社区寻找100位乘风伯乐,邀请人数月度TOP 1 获奖者(大于108人)可获得智能蓝牙音箱!
1087 10

热门文章

最新文章