Java中数组的特性
来源:互联网 发布:java 图片尺寸 编辑:程序博客网 时间:2024/05/21 19:49
数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间。在C,C++等语言中,数组的定义简洁清晰,而在java中确有一些会让人迷惑的特性。本文就尝试分析这些特性。
Java中的数组是对象吗?
Java和C++都是面向对象的语言。在使用这些语言的时候,我们可以直接使用标准的类库,也可以使用组合和继承等面向对象的特性构建自己的类,并且根据自己构建的类创建对象。那么,我们是不是应该考虑这样一个问题:在面向对象的语言中,数组是对象吗?
要判断数组是不是对象,那么首先明确什么是对象,也就是对象的定义。在较高的层面上,对象是根据某个类创建出来的一个实例,表示某类事物中一个具体的个体。对象具有各种属性,并且具有一些特定的行为。而在较低的层面上,站在计算机的角度,对象就是内存中的一个内存块,在这个内存块封装了一些数据,也就是类中定义的各个属性,所以,对象是用来封装数据的。以下为一个Person对象在内存中的表示:
注意:
1)小的红色矩形表示一个引用(地址)或一个基本类型的数据,大的红色矩形表示一个对象,多个小的红色矩形组合在一块,可组成一个对象。
2)name在对象中只表示一个引用, 也就是一个地址值,它指向一个真实存在的字符串对象。在这里严格区分了引用和对象。
那么在Java中,数组满足以上的条件吗?在较高的层面上,数组不是某类事物中的一个具体的个体,而是多个个体的集合。那么它应该不是对象。而在计算机的角度,数组也是一个内存块,也封装了一些数据,这样的话也可以称之为对象。以下是一个数组在内存中的表示:
这样的话, 数组既可以是对象, 也可以不是对象。至于到底是不是把数组当做对象,全凭Java的设计者决定。数组到底是不是对象, 通过代码验证:
- int[] a = new int[4];
- //a.length; //对属性的引用不能当成语句
- int len = a.length; //数组中保存一个字段, 表示数组的长度
- //以下方法说明数组可以调用方法,java中的数组是对象.这些方法是Object中的方法,所以可以肯定,数组的最顶层父类也是Object
- a.clone();
- a.toString();
在数组a上, 可以访问他的属性,也可以调用一些方法。这基本上可以认定,java中的数组也是对象,它具有java中其他对象的一些基本特点:封装了一些数据,可以访问属性,也可以调用方法。所以,数组是对象。
- Java中数组的特性
- Java中数组的特性
- Java中数组的特性
- Java中数组的特性
- Java中数组的特性
- Java中数组的特性
- Java中Vector的特性以及与数组的区别
- JAVA数组的指针特性
- java中数组及java的三大特性之封装
- .NET中数组的隐秘特性
- .NET中数组的隐秘特性
- .NET中数组的隐秘特性
- .NET中数组的隐秘特性
- Java中string的特性
- Java中接口的特性
- Java中事务的特性
- 在Java中利用set特性删除重复的数组元素
- 在Java中利用set特性删除重复的数组元素
- freeswitch在多网卡服务器下如何指定IP地址
- action中获得乱码
- VS编译程序遇到gl.h很多出错
- CSS:CSS3 计数器
- CoovaChilli-1.3.0编译时出现main-opt.c:781: error: ‘ptr’ may be used uninitialized in this function的解决方法
- Java中数组的特性
- 多线程(二)
- 新手上路
- Hadoop学习之配置Eclipse远程调试Hadoop
- Java中数组的类型
- 如何快速向Mysql插入大量数据?
- ZOJ 1151 Word Reversal反转单词 (string字符串处理)
- Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom
- String[]的直接父类就是Object而不是Object[]