ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java中的数组

2021-11-30 12:02:01  阅读:113  来源: 互联网

标签:下标 Java int 元素 long 数组 new


        数组是一组具有相同类型的元素的集合。

一、数组的定义

int[] a  表示定义一个a,类型是存在int类型元素的数组,大小不确定。

int[] a = {1,2,3,4,5};表示定义一个变量a,其类型是数组,该数组的元素类型是int,该数组进行了初始化操作,数组大小确定为五个,元素分别是1,2,3,4,5.

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

boolean[] a = {true,false};

String[] a = {"Hello ","World"};

String[] a = new String[] {"A","B"};

Random[] a = { new Random(),new Random(),new Random()};

注意:int[] a;  a = {1,2,3,4,5};     这种用法是错误的,不能使用这个语法

           int[] a;  a = new int[] {1,2,3};    而这种语法是正确的

int[] a = new int[3];   定义一个数组,元素个数为三;该式等价于 int[] a = new int[] {0,0,0}

String[] a = new String[3];  该式等价于 String[] a = new String[] {null,null,null};

注意:数组的长度一旦确定是无法更改的。

    int[] a = new int[3];   定义一个有三个元素的数组,让a引用指向该数组

    a = new int[5];  定义一个新的有五个元素的数组,让a引用指向新的数组

上面这种写法是可以的,本质上数组长度没有变,只是改变了a的引用指向。

二、数组的下标:

1.数组下标的类型为int类型,其下标范围为[0,数组的长度)。

2.使用下标访问数组元素的具体代码:

a[下标] = 0;将该位置的元素赋值为0;

b = a[下标];将该位置的元素赋值给另一个变量

三、对数组常见操作:

1.sort(排序操作)

自定义sort排序

2.binarySearch(二分查找)

注意:只有在数组有序的情况下,才可以进行二分查找。

 3.equals(判断两个数组是否相等)

 4.fill

5.copyOf(复制数组)

 copyOfRange(复制范围内的数组)

6.toString(相当于遍历,得到数组的字符串表示)

7.arraycopy

具体用法:在使用时输入原数组、原数组复制的开始下标、目标数组,目标数组的开始下标,拷贝长度。

 代码1:实现数组的遍历

        按照从前到后的顺序,访问数组中的每个元素(使用a.length来获取数组的长度)

 代码2:实现数组元素的交换

 代码3:实现两个数组之间的交换

使用数组过程中常见的两个异常:

1.下标越界异常

 2.空指针异常

        对一个值为null的引用做解引用操作时,会出现空指针异常。

 扩展:

       1. 对于引用类型来说,形参的改变不影响实参(除通过引用改对象之外)。

       2.一个对象可以被多个引用指向,而一个引用只能指向一个或0个对象,不能指向多个。

注意:在下面这种情况下,a引用为空也不会出错。

 

         从以上步骤可以看出,当执行了b[1 ] = 100时,a中的值发生了变化。

四、多维数组

        二维数组实际上就是将多个一维数组整合在一起的一个数组,多(n)维数组是将多个

(n-1)维数组整合到一起。下面通过对二维数组的相关操作来理解多维数组。

多维数组形式类型
一维数组long[]  a;long
二维数组long[][]  b;long[],是引用类型

        long[][]  a = new long[10][];   因为类型为long[],是引用类型,引用类型的默认值是null,所以该数组十个元素的值都为null。a[3]得到的类型为long[],a[3][0]代表从a这个数组取出下标是3的元素,元素类型为long[],所以从语法上讲,这种情况下还可以取出元素中的元素,但是所有默认值都为null,对其解引用就会出现空指针异常。

         综上所述,数组的大部分知识就以归纳完毕,如有错误,请指正!

 

标签:下标,Java,int,元素,long,数组,new
来源: https://blog.csdn.net/qq_49912778/article/details/121476274

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有