前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java数组(Array)

Java数组(Array)

作者头像
用户7886150
修改于 2021-04-08 03:05:11
修改于 2021-04-08 03:05:11
3910
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Java数组

数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 

数组相关的概念: 

数组名元素角标、下标、索引数组的长度:元素的个数 

数组的特点: 

数组是按序排列的数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型创建数组对象会在内存中开辟一整块连续的空间数组的长度一旦确定,就不能修改。 

数组的分类: 

① 按维数:一维数组、二维数组、… 、n维数组②按数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组 

一维数组 

声明与初始化 

//正确的方式:

        int num;//声明

        num = 10;//初始化

        int id = 1001;//声明 + 初始化

        int[] ids;//声明

        //1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行

        ids = new int[]{1001,1002,1003,1004};

        //1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行

        String[] names = new String[5];

    int[] arr4 = {1,2,3,4,5};//类型推断

错误的方式: 

//        int[] arr1 = new int[];

//        int[5] arr2 = new int[5];

//        int[] arr3 = new int[3]{1,2,3};

一维数组元素的引用:通过角标的方式调用。 //数组的角标(或索引从0开始的,到数组的长度-1结束。 

names[0] = "王铭";

names[1] = "王赫";

names[2] = "张学良";

names[3] = "孙居龙";

names[4] = "王宏志";//charAt(0)

数组的属性:length 

System.out.println(names.length);//5

System.out.println(ids.length);

说明: 数组一旦初始化,其长度就是确定的。arr.length 数组长度一旦确定,就不可修改。 4.一维数组的遍历 for(int i = 0;i < names.length;i++){ System.out.println(names[i]); } 5.一维数组元素的默认初始化值 > 数组元素是整型:0 

  > 数组元素是浮点型:0.0

   > 数组元素是char型:0或'\u0000',而非'0'

   > 数组元素是boolean型:false

   > 数组元素是引用数据类型:null

6.一维数组的内存解析  

二维数组 

数组属于引用数据类型数组的元素也可以是引用数据类型一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。 

二维数组的声明与初始化 正确的方式: 

int[] arr = new int[]{1,2,3};//一维数组

    //静态初始化

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

    //动态初始化1

    String[][] arr2 = new String[3][2];

    //动态初始化2

    String[][] arr3 = new String[3][];

//也是正确的写法:

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

    int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断

错误的方式: 

//        String[][] arr4 = new String[][4];

//        String[4][3] arr5 = new String[][];

//        int[][] arr6 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};

如何调用二维数组元素: 

System.out.println(arr1[0][1]);//2

        System.out.println(arr2[1][1]);//null

        arr3[1] = new String[4];

        System.out.println(arr3[1][0]);

    System.out.println(arr3[0]);//

二维数组的属性: 

System.out.println(arr4.length);//3

        System.out.println(arr4[0].length);//3

        System.out.println(arr4[1].length);//4

遍历二维数组元素: 

for(int i = 0;i < arr4.length;i++){

            for(int j = 0;j < arr4[i].length;j++){

                System.out.print(arr4[i][j] + "  ");

            }

            System.out.println();

    }

二维数组元素的默认初始化值 

 规定:二维数组分为外层数组的元素,内层数组的元素 int[][] arr = new int[4][3]; 外层元素:arr[0],arr[1]等 内层元素:arr[0][0],arr[1][2]等 数组元素的默认初始化值 针对于初始化方式一:比如:int[][] arr = new int[4][3]; 外层元素的初始化值为:地址值 内层元素的初始化值为:与一维数组初始化情况相同 针对于初始化方式二:比如:int[][] arr = new int[4][]; 外层元素的初始化值为:null 内层元素的初始化值为:不能调用,否则报错。  

二维数组的内存结构 

数组常见用法 

1.数组的创建与元素赋值: 杨辉三角(二维数组)、回形数(二维数组)、6个数,1-30之间随机生成且不重复。 2.针对于数值型的数组: 最大值、最小值、总和、平均数等 3.数组的赋值与复制 

int[] array1,array2;

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

3.1 赋值: 

array2 = array1;

如何理解:将array1保存的数组的地址值赋给了array2,使得array1和array2共同指向堆空间中的同一个数组实体。  3.2 复制: 

array2 = new int[array1.length];

for(int i = 0;i < array2.length;i++){

array2[i] = array1[i];

}

 如何理解:我们通过new的方式,给array2在堆空间中新开辟了数组的空间。将array1数组中的元素值一个一个的赋值到array2数组中。 4.数组元素的反转 

    //方法一:

//        for(int i = 0;i < arr.length / 2;i++){

//            String temp = arr[i];

//            arr[i] = arr[arr.length - i -1];

//            arr[arr.length - i -1] = temp;

//        }

    //方法二:

//        for(int i = 0,j = arr.length - 1;i < j;i++,j--){

//            String temp = arr[i];

//            arr[i] = arr[j];

//            arr[j] = temp;

//        }

5.数组中指定元素的查找:搜索、检索 5.1 线性查找: 实现思路:通过遍历的方式,一个一个的数据进行比较、查找。 适用性:具有普遍适用性。 5.2 二分法查找: 实现思路:每次比较中间值,折半的方式检索。 适用性:(前提:数组必须有序) 

6.数组的排序算法  

理解: 1)衡量排序算法的优劣: 时间复杂度、空间复杂度、稳定性 

2)排序的分类:内部排序 与 外部排序(需要借助于磁盘) 

3)不同排序算法的时间复杂度 

 4)手写冒泡排序 

int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};

    //冒泡排序

    for(int i = 0;i < arr.length - 1;i++){

        for(int j = 0;j < arr.length - 1 - i;j++){

            if(arr[j] > arr[j + 1]){

                int temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }        

数组的常见异常 

1.数组角标越界异常:ArrayIndexOutOfBoundsException 

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

//        for(int i = 0;i <= arr.length;i++){

//            System.out.println(arr[i]);

//        }

//        System.out.println(arr[-2]);

//        System.out.println("hello");

2.空指针异常:NullPointerException 

    //情况一:

//        int[] arr1 = new int[]{1,2,3};

//        arr1 = null;

//        System.out.println(arr1[0]);

        //情况二:

//        int[][] arr2 = new int[4][];

//        System.out.println(arr2[0][0]);

        //情况:

        String[] arr3 = new String[]{"AA","BB","CC"};

        arr3[0] = null;

        System.out.println(arr3[0].toString());

小知识:一旦程序出现异常,未处理时,就终止执行。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java数组(Array)
数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
全栈程序员站长
2022/09/08
5870
【JavaSE学习】 Day3 数组
  本次文章讲述的是JavaSE数组的使用,讲述一维数组、二维数组创建和使用、常见数组操作和使用、Arrays工具类的使用、数组的常见异常。
小小程序员
2023/02/24
2050
【JavaSE学习】 Day3 数组
JAVA入门学习二
循环结构分类:for / while / do…while 跳出循环:break; [ 只能在switch和循环中 ] 继续执行:continue; [ 只能在循环中 ] 结束方法:return value; 返回值作用不是结束循环而是结束方法;
全栈工程师修炼指南
2020/10/23
4500
JAVA入门学习二
二维数组的使用
package com.java; /* * 二维数组的使用 * 1.理解: * 对于二维数组的理解,我们可看成是以为数组又作为另外一个一维数组元素的存在。 * 从数组底层的运行机制来看,没有多维数组 * 2.二维数组 * (1)二维数组的声明和初始化 * (2)如何调用数组的指定位置的元素 * (3)如何获取数组的长度 * (4)如何遍历数组 * (5)数组元素的默认初始化值 * (6)数组的内存解析 */ public class ArrayTest2 { pub
用户8639654
2021/07/26
8240
java中数组遍历的三种方式
通常遍历数组都是使用for循环来实现。遍历一维数组很简单,遍历二维数组需要使用双层for循环,通过数组的length属性可获得数组的长度。
全栈程序员站长
2022/09/05
1.4K0
Java基础(六):数组
java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法
冬天vs不冷
2025/01/21
370
Java基础(六):数组
《JavaSE-第六章》之容器数组
本章大家介绍一个存储相同数据类型的容器----数组,以及便于我们对数组操作的工具类Arrays类的使用。
用户10517932
2023/10/07
2170
《JavaSE-第六章》之容器数组
java中数组的定义与使用
Java中的数组跟c语言的数组几乎不一样,我们要区分对待。在之后你就能理解到我为什么说这句话了。
E绵绵
2024/04/08
1650
java中数组的定义与使用
Java开发知识之Java数组
  首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构
IBinary
2019/05/25
1.5K3
完整的java数组操作应用知识汇总
数组是一种非常有用和常用的数据类型,存在于每种程序语言之中,java中的数组是一种最简单的复合数据类型,刚学习java数组的小白们大多都会听到一句这样的话:java是纯面向对象的语言,它的数组也是一个对象。所以很多人就按照一个对象的方式来使用数组,后来你会发现,将数组作为一个类来使用在实现上是多么的“不自然”。下面就来全面了解一下关于java中数组的知识。
三哥
2018/08/20
1.6K0
完整的java数组操作应用知识汇总
Java数组
使用sort()方法对Java数组进行排序 使用 binarySearch() 方法来查找数组中的元素的位置。 (Arrays.binarySearch方法使用前,需要对数组排序,才能定位值插入位置,因为binarySearch采用二分搜索法)
李玺
2021/11/22
1.1K0
Java 数组、排序和查找
# Java 数组、排序和查找 # 为什么需要数组 一个养鸡场有 6 只鸡,它们的体重分别是 3kg,5kg,1kg,3.4kg,2kg,50kg 。请问这六只鸡的总体重是多少?平 均体重是多少? 请
用户9615083
2022/12/25
2K0
Java 数组、排序和查找
第81节:Java中的数组
本节介绍数组的基本概念,数据就是一种数据结构,可以用来存储多个数据,每个数组中可以存放相同类型的数据。比如,在学校,我们是一个班,这里的班级中每个同学都是这个班级数组中的元素,都是同样的类型为学生,对应的学号就是我们的索引,但是在现实中的学号一般都是从1开始的,而在Java中的数组索引是从0开始的。
达达前端
2019/07/03
8510
第81节:Java中的数组
第四天 数组【悟空教程】
第04天 Java基础 第1章 数组 1.1 数组概念 软件的基本功能是处理数据,而在处理数据时,必须先进行数据持有,将数据持有之后,再对数据进行处理。我们将程序中可以临时存储数据的部分叫做容器。 Java当中具有持有数据功能的容器中,数组是最基本的,也是运算速度最快的。 1.2 数组的定义格式 数组是引用类型的一种,其使用方式与引用类型类似,均使用new关键字创建对象为变量赋值。 格式1:数据类型[] 数组名 = new 数据类型[元素个数或数组长度]; 格式2:数据类型 数组名[] = new 数据类
Java帮帮
2018/06/11
8080
Java数组详解(超全)
索引:命名规则、自动类型推断、静态动态初始化、多维数组的其他写法、常见错误写法、数组下标越界、默认值问题、数组长度问题、数组内存解析
全栈程序员站长
2022/09/08
4370
Java数组详解(超全)
【day05】数组
程序员波特
2024/12/21
1130
【day05】数组
【Java宝典】——二维数组的寻宝之旅
由上面的输出结果我们可以得出:其实二维数组的本质就是一个大的一维数组array,里面包含着两个小的一维数组。由此我们可以将上面的循环打印二维数组的语句修改为如下样式:
ImAileen
2024/09/20
600
【Java宝典】——二维数组的寻宝之旅
《JavaSE》---9.<基础语法(java数组的3种初始化&常规使用)>
1.数组是一段连续的内存空间,所以支持随机访问,通过下标访问快速访问数组中任意位置的元素
用户11288958
2024/09/24
1550
《JavaSE》---9.<基础语法(java数组的3种初始化&常规使用)>
5. 数组
(2)数组的元素类型:即创建的数组容器可以存储什么数据类型的数据​。元素的类型可以是任意的Java的数据类型。例如:int、String、Student等。
捞月亮的小北
2023/12/01
1940
5. 数组
【愚公系列】2021年12月 Java教学课程 21-二维数组
​ 已知两个整数变量a = 10,b = 20,使用程序实现这两个变量的数据交换 ​ 最终输出a = 20,b = 10;
愚公搬代码
2021/12/29
2840
相关推荐
Java数组(Array)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文