首先,数组是Java中的对象。它们不是像int、short或long这样的基本类,也不是具有很多方法的全功能对象,但由于它们是对象,所以它们隐式地扩展了Object,这就是为什么可以使用数组引用(例如toString())调用java.lang.object的任何方法。

  2.Java中数组的另一个重要之处是,一旦创建,就不能更改数组的大小。好奇的开发人员可能会问,我们如何在Java中拥有像ArrayList这样的动态集合,可以在饱和的时候调整自身大小?好吧,扩容不像你想得那样,可以简单地增加一个数组的大小来容纳额外的元素。为了增加大小,必须创建一个新数组,并将内容从旧数组复制到新数组。尽管存在将元素从一个数组复制到另一个数组的快速方法,但它仍然是一个代价很大的操作,还会降低Java应用程序的性能。这就是为什么初始化具有适当大小的数组或集合仍然是最好的做法之一。

  3.关于数组,第三件要知道的是它的长度属性,它告诉你数组的大小或它可以容纳多少元素。这通常也是造成混淆的原因,因为字符串有类似的length()方法,这是一个方法,而数组长度是属性,所以不再有括号。另一个增加这种混淆的是arraylist的size()方法,它也返回arraylist可以容纳多少元素。下面是一个代码片段示例,用于查找Java中数组的长度。

  int[]arrayOfInts=newint[]{101,102,103,104,105};

  System.out.println("lengthofarrayOfIntsis:"+arrayOfInts.length);//print5

  在Java中循环遍历数组时,可以使用数组的长度来避免访问无效的索引,如下一个示例所示。

  4.数组索引从零开始,因此第一个元素的索引为0,最后一个元素的索引为length-1。此属性用于迭代for循环中的所有元素。String[]cities=newString[]{"London","Paris","NewYork","HongKong","Tokyo"};

  您可以看到,我们从0(第一个元素)开始循环,以小于长度的方式结束循环,例如length-1(最后一个元素索引)。如果尝试访问数组[长度],将获得arrayIndexOutOfBoundsException,因为最后一个索引是length-1。

  5.正如我之前所说的,Java虚拟机将数组视为对象。数组的类型是“[elementType”,其中elementtype是元素的类型。例如,一个(一维)整数数组的类型为“[I”,同样,一维短数组的类型为“[S”,一维浮点数组的类型为“[F”。对于二维数组,可以得到两个“[[”,例如,二维int数组的类型为“[[i”。当您在Java中打印数组时,可以检查这一点。它打印其元素类型和哈希代码,如下所示。

  6.如果关注我的上一个示例,那么您会注意到使用toString()打印数组不会产生除元素类型之外的任何有用的内容。理想情况下,我们希望按照它们存在的顺序查看数组的元素。我们可以重写array类的toString()方法吗?不,这不是一个选项,但不要担心我们有一个实用程序类java.util.Arrays,它包含几种方法来处理不同类型的数组。我们可以使用Arrays类的toString()和deepToString()方法在Java中打印一维和多维数组的数组元素,如下所示。

  7.与toString()类似,数组的equals()方法也没有用处。在大多数情况下,我们希望将数组的元素及其顺序与另一个数组及其元素进行比较,但array的equals()方法不这样做,而是引用比较,仅当两个变量都指向同一个数组对象时才返回true,如下例所示。但是不用担心,Arrays类用equals()和deepEquals()方法来比较Java中的一维数组和多维数组元素。您可以通过以下示例推断出相同的理解:

  您可以看到尽管元素及其顺序相同,第一条语句是假的,因为“==”运算符仅在两个变量都指向同一数组时才返回真,这是第二次相等性检查的情况。同样,equals()方法也模拟了==运算符的行为,因为数组不会重写对象的equals()方法,其默认行为是基于相同的引用来决定相等性。Arrays.equals()是检查两个数组在Java中是否相等的正确方法。为此,你应该一直使用它。

  8.Java程序员应该习惯使用deepEquals()方法来检查两个多维数组的相等性,因为Arrays.equals()方法不执行多维比较。以下是检查Java中多维数组相等性的示例:

  9.使用java时,你需要多次在静态数组与动态数组之间进行转换。

  10.在Java中有几种初始化数组的方法。你也可以在不初始化的情况下创建它们,在这种情况下,所有存储桶都将保持元素类型的默认值,例如,如果你创建一个空数组并且没有初始化它,则所有存储桶都将保持为零,因为这是Java中整数变量的默认值。类似地,布尔数组默认使用false值初始化,String数组使用空值初始化。如果您事先知道这些值,则可以在创建时初始化数组,如下所示:

  11.一个额外的提示是,array与arraylist有很大的不同,后者是一个动态数组,它可以根据需要调整自身的大小。另一方面,创建后不能更改数组的大小。除了这一事实之外,这两个类之间还有几个不同之处,例如ARAYLIST是Java集合框架的一部分,但数组不是。

  这是关于Java中数组数据结构的一些要点的列表。使用数组来保存相同类型的元素,例如整数、字符串或对象,但不能混合它们,例如Java数组不能同时包含整数和字符串,在编译时是错误的,但对于对象,如果编译器允许,它将在运行时抛出arraystoreException。同样,如果知道索引,数组也是用于访问元素的快速数据结构之一

  以上就是动力节点java培训机构小编介绍的“Java中的数组数据结构需要了解的要点”的内容,希望对大家有帮助,更多java最新资讯请继续关注动力节点java培训机构官网,每天会有精彩内容分享与你。

Java中的数组数据结构需要了解的要点相关推荐

  1. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  2. java中常见的数据结构分类

    自己总结了下java中常见的数据结构和分类 在这里,我总结了list中数据结构对应我们所学的线性表,属于顺序存储还是链式存储,但没有总结set数据结构对应我们所学的哪一种(按理说应该是集合),是因为t ...

  3. Java中的数组Array

    1.数组的基本性质: ①java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object. ②数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据的集合).数组中每一个元 素 ...

  4. Java中一维数组的内存解析(浅显易懂,新手必看)

    1.初识JVM 要认识Java中一维数组的内存存储情况,首先应该简单了解一下JVM这个概念 1.1什么是JVM JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计 ...

  5. Java中的数组和Arrays工具类

    数组 数组的特点 Java语言中的数组不属于基本数据类型而是引用数据类型 , 所以数组对象是在堆内存当中存储的 , 数组的父类是Object 数组是一个数据的集合 , 本质是一个容器可以存储" ...

  6. java数组创建后大小能改变吗,在Java中,数组创建成功以后,其大小(??? )(能/不能)改变...

    在Java中,数组创建成功以后,其大小(??? )(能/不能)改变 答: 不能 新民主主义革命最基本的动力是(). 答:中国无产阶级 病人,男性,36岁.尿蛋白(++++),全身水肿1个月,测血压16 ...

  7. 四十三、深入Java中的数组流,数据流和对象流操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  8. Java中 byte[]数组序列化和fastjson序列化区别

    Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...

  9. Java中遍历数组使用foreach循环还是for循环?

    这篇文章主要介绍了Java中遍历数组使用foreach循环还是for循环?本文着重讲解for语句的语法并给出使用实例,同时总结出尽量使用foreach语句遍历数组,需要的朋友可以参考下 从JDK1.5 ...

最新文章

  1. Cannot call sendRedirect() after the response has been committed解决方法
  2. Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网
  3. 科学计算机怎么调亮度,LED显示器背光很刺眼怎么办?显示器刺眼如何设置?
  4. 如何高效的学习掌握新技术
  5. 【入门基础】Numpy基础20问
  6. 你该认识这样的Linux_shell之循环控制
  7. win8下vs2012加wp8 sdk开发xna4.0PC游戏
  8. [SAP ABAP开发技术总结]权限对象检查
  9. 关于《应用STATA做统计分析(原书第8版)》一书中`chart()‘语句问题
  10. java 基础学习——基本技巧(一)
  11. MySQL的show global variables like “%timeout%“;
  12. IOS-40-测试环境与正式环境的代码通过标示符来区分
  13. QTP11.5/UFT官方下载与安装
  14. IOS-Tom猫小游戏实现
  15. 前端模糊搜索,拼音模糊搜索,js拼音模糊搜索
  16. python的pyaudio教程入门_Python音频操作工具PyAudio上手教程
  17. Lvs之NAT、DR、TUN三种模式的应用配置案例
  18. CSV文件分割工具开发-python版
  19. iOS 上的 WebSocket 框架 Starscream
  20. 7寸显示器 树莓派4b_基于树莓派4B显示屏分类

热门文章

  1. 在C#里调用C++的dll时需要注意的一些问题转
  2. android代码设置全屏
  3. #周分享#骨架屏[Skeleton Screen]
  4. Java程序员应知道的十条Java优化策略,让你的系统健步如飞
  5. 一款炫酷Loading动画--载入成功
  6. 使用transform和transition制作CSS3动画
  7. lvs + keepalived HOW TO
  8. iPhone与Android手机 各个型号的UserAgent
  9. win7 下jenkins配置与使用
  10. perl中Net::FTP帮助文档