(二)Java数组特性总结,你真的了解数组吗?

摘要:
1、 数组的特殊性(1)数组标识符是一个引用,(3)数组的长度仅指示数组可以容纳多少个元素,(4)多维数组可以使用数组转换为字符串。deepToString()。

一、数组的特殊性

(一)数组标识符是一个引用,指向堆中创建的一个真实对象,这个对象(数组)保存了指向保存其他对象的引用。

(二)数组中保存引用类型时保存的是对象引用,基本数据类型数组保存基本数据的值。

(三)数组的length只表示数组能够容纳多少元素,不能保存实际保存的元素个数。

(四)多维数组可以使用Arrays.deepToString()将多维数组转换成String

(五)不能使用泛型创建数组,例如:

  T []list=new T[size];//会报错

解决方法:

  使用Object转型:

  Object [] objs=new Object[size];

  T []Objs=(T[])objs;

二、Arrays实用功能

(一)Array常用函数

  1.Array.equals()用于比较两个数组是否相等(deepEquals用于多维数组)

  2.Array..fill()用于填充数组

  3.Array.sort()用于对数组排序

  4.Array.binarySearch()用于在已经排序的数组中查找元素

  5.Array.toString()产生数组的String表示

  6.Array.hashCode()产生数组的散列码

  7.Array.asList()接受任意的序列或数组作为参数,将其转变成List容器

(二)复制数组

  System.arraycopy(),使用此函数复制数组将会比for循环快很多。

  格式System.arraycopy(src,beginIdex1,des,beginIndex2,length);

  src:源数组  beginIndex1源数组开始复制的位置

  des目的数组beginIndex2 目的数组开始被赋值的位置

  length: 复制的长度

(三)数组的比较

Arrays.equals()方法,可以比较整个数组。数组相等的条件是元素个数相同,并且对应位置的元素也相等(通过调用每个元素的equals()作比较,基本类型调用对应包装类的equals()方法)

(四)数组元素的比较

Java通过使用策略设计模式来实现了不同元素的比较大小。

策略模式:将“会发生变化的代码”封装在单独的类中(策略对象),在其他类中,通过调用策略对象的方法实现不同的策略对象,结果不同的目的;

Java提供了两种方式来提供比较功能。

一种是实现java.lang.Comparable接口,让你的天生具有比较能力。此接口只有一个compareTo()方法,接受一个和本对象比较的另外一个对象,如果比它小就返回负数,相等为0,比它大就是正数。

示例:

   (二)Java数组特性总结,你真的了解数组吗?第1张

测试代码:

 (二)Java数组特性总结,你真的了解数组吗?第2张

运行结果:

 (二)Java数组特性总结,你真的了解数组吗?第3张

另一种就是我们编写自己的comparator比较类,继承Comparator接口,实现compare方法,此方法有两个参数,即我们比较的两个对象。

示例:

 (二)Java数组特性总结,你真的了解数组吗?第4张

测试代码:

 (二)Java数组特性总结,你真的了解数组吗?第5张

运行结果:

 (二)Java数组特性总结,你真的了解数组吗?第6张

总结:

自动包装机制和泛型的加入使得容器比数组更加灵活且富有优势。在java编程中,应该优先选用容器而不是数组,只有已证明性能成为问题(数组比容器对性能提高更多)时,才应该将程序重构为使用数组。

免责声明:文章转载自《(二)Java数组特性总结,你真的了解数组吗?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HttpRunner二:ENV变量的使用及提取base_urlC#调用行情接口API 转 武胜下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTTP服务&AJAX编程

即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用。 本质是在HTTP协议的基础上以异步的方式与服务器进行通信。 传统方式我们是以表单形式与服务器通信的。 1.1   异步 指某段程序执行时不会阻塞其它程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序,相反则为同步。 其优势...

SimpleDateFormat并发隐患及其解决

此文已由作者姚太行授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 SimpleDateFormat被大量使用于处理时间格式化过程,由于该类在创建时会指定一个pattern用于标明固定的时间格式,所以在使用中,一般会创建一个作用域较大(static修饰或某类的私有属性)的对象用于重复使用。由于时间转换过程遇到的多线程并发的使用场景...

kubernetes之健康状态检测

1.说明容器探针: kubelet 对容器执行的定期诊断探针执行方式: LivenessProbe: 判断容器是否存活 running状态, 如果不健康kubelet就会杀掉pod,根据重启策略RestartPolicy进行相应的处理 ReadinessProbe: 判断容器是否处于可用Ready状态, 达到ready状态表示pod可以接受请求, 如果...

PSPNet论文阅读笔记

这篇文章做了啥 这是一篇比较早的文章,做的是分割的任务,论文的架构比较清晰,主要是分析了一些现在的分割的网络存在不能够获取global信息的问题,针对这些存在的问题,作者提出了pyramid scene parsing network(PSPNet)金字塔场景解析网络,PSPnet能够extent pixel level的feature到global的fe...

docker使用问题汇总

1.解决镜像字符集问题 在dockerfile中加入以下配置 RUN yum -y install kde-l10n-Chinese && yum -y reinstall glibc-common ENV LC_ALL zh_CN.UTF-8 ENV LANG zh_CN.UTF-8 宿主机中所有字符集安装包都在/usr/share/i1...

Android常见问题1:窗体泄露(1)

  今天学习对话框AlertDialog,写一个Demo,需求是:只有一个Activitty,在这个Activity中只有一个按钮Button,当点击按钮Button时,弹出对话框,提示是否关闭该Activity,退出程序(只有一个界面). MainActivity源码: 1 package com.my.day22_my_dialog1; 2 3...