博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java深入数组
阅读量:5875 次
发布时间:2019-06-19

本文共 1728 字,大约阅读时间需要 5 分钟。

  hot3.png

数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。

1.内存中的数组,数组引用变量只是一个引用,这个引用可以指向任何有效的内存,只有当该引用指向有效的内存后,才能通过数组变量来访问数组元素。与所有的引用变量相同的是,引用变量是访问真实对象的根本方式。也就是说,如果希望在程序中访问数组对象的本身,则只能通过这个数组的引用变量来访问它。其实实际的数组对象被储存储在堆内存(heap)里面,如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈(stack)内存中。一个方法执行时,每个方法都会建立自己的内存栈,这个方法的变量都会存放在这个内存栈中,这个方法结束内存也就销毁。在程序中创建一个对象时,这个对象将被保存在运行时数据区中,以便反复利用,这个运行时数据区就是堆内存。堆内存的对象不随方法结束而销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适时候回收它。

2.基本类型数据的初始化,先将数组变量存在栈中,当执行赋值操作时,再将数组中的每一个元素存放在堆中。引用类型数组的初始化,先将数组变量放入栈中,再将数组的引用放入堆内存中,再将引用的变量放入栈中,再将引用变量的对象放入堆内存中,最后我们将堆内存中的真实对象放入数组的引用中,所以我们得到的对象变量的引用和数组对象的引用相同。

3.没有多维数组,java语言里提供了支持多维数组的语法,但如果从数组的底层机制上来看,二维数组其实就是一维数组,多维数组也可以看成一维数组。

4.java 8增强的工具类:Arrays这个类里面包含了如下几个static修饰的方法(static修饰的方法可以直接通过类名调用)。

int binarySearch(type[] a,type key):使用二分法查询key元素值在a数组中出现的索引;如果a数组中不包含key元素的值,则返回负值。调用该方法要求数组元素已经按升序排列,这样才能得到正确的结果。

int binarySearch(type[] a, int fromIndex,int toIndex,type key):这个方法与前一个方法类似,但它只搜索数组中fronIndex到toIndex索引的元素。调用该方法时要求数组中的元素已经按照升序排列,这样才能得到正确的结果。

type[] copyOf(type[] orginal,int length):这个方法将会把original数组复制成一个新数组,其中length是新数组中的长度。

type[] copyOfRange(type[] original,int form,int to):这个方法和前面的方法相似。

boolean equals(type[] a,type[] a2):如果数组a和数组a1的长度相等,而且a数组和a1数组的数组元素也一一相同,该方法将返回true。

void fill(type[] a,type val):将数组a中的所有元素都赋值为val。

void fill(type[] a,int formIndex,int toIndex):这个方法与前面的方法作用相同。

void sort(type[] a):该方法对a数组的数组进行排序。

void sort(type[] a,int formIndex,int toIndex):该方法与前面的方法类似。

String toString(type[] a):该方法将一个数组转换成一个字符串。该方法按顺序把多个数组元素连在一起,多个数组元素使用英文逗号 和空格隔开。

另外在System类里面也包含了一个static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)方法,该方法可以将src数组里的元素赋值给dest数组的元素,其中serPos指定从数组的几个元素赋值,length参数指定将src数组的多少个元素赋值给dest数组元素。

转载于:https://my.oschina.net/zkctt/blog/704939

你可能感兴趣的文章
ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
查看>>
怎样才能当上项目经理?(转)
查看>>
消息、接收-关于Erlang Socket的三种消息接收模式-by小雨
查看>>
文件配置IBM Ration Rhapsody 软件的环境配置
查看>>
蛇形填数
查看>>
PostgreSQL在何处处理 sql查询之五十九
查看>>
T-SQL查询进阶--深入浅出视图
查看>>
iOS 如何创建单例对象
查看>>
skype msnLite 静态路由
查看>>
Hibernate原理
查看>>
SlidingMenu+Fragment实现当前最流行的侧滑
查看>>
我是如何写作一本软件+哲学式的书籍的(下)
查看>>
Spring——AOP配置时的jar包异常
查看>>
HBase修改压缩格式及Snappy压缩实测分享
查看>>
Minimit Anima – 硬件加速的 CSS3 动画插件
查看>>
HDUOJ-------The Hardest Problem Ever
查看>>
学习嵌入式—导火线
查看>>
hdu 1217 Arbitrage (最小生成树)
查看>>
Bash Shell字符串操作小结
查看>>
sourceinsight技巧
查看>>