java数组的深入理解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

java数组的深入理解:数组声明type[]name;//typename[];建议第一种声明方式,声明数组不可以指定数组长度,但可以指定维度,用[]来记录数组维度。type[][]name;//2维数组声明name=newtype[number];type[]name=newtype[number];//更多时候数组声明和初始放在一条语句。此时完成数组的初始化,指明数组长度,数组元素还没有显式的赋值,均为默认值。若此时数组类型若为对象类型的数组,此时元素值为null,即空洞。另外数组标识——[]中有显式的数字(变量),一定是在new的时候,其他时候[]中都不需要指定数组长度,只是数组标识。例如数组声明或者方法的形参为数组的时候,type[]即可。为什么要引入数组,数组的必要性统一管理相同类型的数据java中数组是一种最简单的复合数据类型,数组是有序数据的集合,并且可以用一个统一的数组名+下标【索引,偏移量】来进行访问。数组到底是什么?数组是对象的依据1.java中一切皆对象,而且java作为纯面向对象的语言,数组也是一个对象应该也在情理之中。首先先来看下数组创建的语句:type[]name=newtype[num];对象的创建语句:typename=newtype();数组创建没有()来传递参数给构造器,莫非数组没有构造器???2.数组的父类是ObjectnewObject[2].getClass().getSuperClass();返回的应该是Object.class,我这边运行报错,〒_〒插入getClass()方法,返回对应的当前正在运行时的类所对应的对象。getSuperClass()方法,返回当前实体类的父类。因此要想返回当前类的父类可以使用如下代码:super.getClass().getSuperClass().getName();【从某人博客看的,待解决】另外数组没有对应的类文件,因为数组类是运行时产生的。java.lang.reflect.Array类是final修饰,数组不是他的子类,这个类是用来动态生成数组或者操作数组。(newInteger[2]).getClass();结果[Ljava.lang.Integer数组和普通类不一样,以一个全限定路径名+类名作为自己的唯一标识,[外加一个或者多个L+数组元素类全限定路径+类来作为自己的唯一标识,这个也是和普通类的区别。java虚拟机(java指令集)在处理数组和普通类的时候也会有区别。java.lang.reflect.Fieldfieldarr=(newObject[2]).getClass().getField(length);抛出异常:java.lang.NoSuchFieldException:length似乎在说数组类没有length这个域;java数组最多有255维度。数组的进一步探讨int[]arr=null;在java中=运算符用于基本数据类型的时候,将值直接复制给变量,当用于对象时,将对象的地址(引用,指针)传递给该类型变量。在java中数组是一个对象,可以将一个已经创建好的数组对象使用=运算符来指向数组类型变量。int[]a={1,3,4};int[]b=a;int[]c=a;java中数组作为对象的好处1,越界检查,编译器帮助检查越界2,lengthfield,length可以很方便的获取数组的长度,但是不能或许当前数组中实际包含多少元素。3,自动初始化,数组元素通过new关键字开辟空间之后,已经有其默认的数组,此时和数组类型有关,对象类型为null,基本数据类型默认值,0;4,数组作为返回值,既然数组是对象,就可以把数组作为返回值,而且垃圾回收器会自动对其管理。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功