网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 新手入门 > oop面向对象 > 面向对象编程:Java复杂数据类型用法  

面向对象编程:Java复杂数据类型用法

2004-04-22  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  在这篇文章中,我们将讨论Java语言中的复杂数据类型。其内容涉及到初始化过程、默认初值和某些针对复杂数据类型的操作。
  
  索引
  同简单数据类型的定义一样,Java虚拟机(JVM)还定义了索引(reference)这种数据类型。索引类型可以“引用”变量,由于Java没有明确地定义指针类型,所以索引类型可以被认为就是指向实际值或者指向变量所代表的实际值的指针。一个对象可以被多于一个以上的索引所“指”。JVM从不直接对对象寻址而是操作对象的索引。
  
  索引类型分成三种,它们是:类(class)、接口(interface)和数组(array)。索引类型可以引用动态创建的类实例、普通实例和数组。索引还可以包含特殊的值,这就是null 索引。null 索引在运行时上并没有对应的类型,但它可以被转换为任何类型。索引类型的默认值就是null。
  
  
  类(Class)指的是定义方法和数据的数据类型。从内部来看,JVM通常把class类型对象实现为指向方法和数据的一套指针。定义class类型的变量只能引用类的实例或者null ,如以下代码所示:
  MyObject   anObject = new MyObject();  // 合法
  MyObject   anotherObject = null;  // 合法 网管联盟bitsCN_com
  MyObject   stillAnotherObject = 0;  // 非法
  
  接口
  接口(interface)好比一种模版,这种模版定义了对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口不能被实例化。类可以实现多个接口并且通过这些实现的接口被索引。接口变量只能索引实现该接口的类的实例。比方说,假设我们定义了一个接口,名字是Comparable ,同时还定义了一个类SortItem,这个类实现了接口Comparable,那么我们可以编写以下的定义代码:
  Comparable  c = new SortItem();
  
  假如Comparable 接口定义了一个方法: public void compare(Comparable item), 那么SortItem 类就必须提供compare 方法的实现,如以下代码所示:
  public class SortItem implements Comparable
  {
     public void compare(Comparable item)
     {
        ...method implementation here
     }
  }
  
  数组
  Java数组(array)是动态创建的索引对象,这一点和类非常相似,此外,同类一样,数组只能索引数组的实例或者null ,如以下代码所示:
  int[]   myIntArray = new int[5]; 中国网管联盟bitsCN.com
  int[]   anotherIntArray = null;
  
  数组是Object类的继承,这样,Object类的所有方法都可以被数组调用。数组对象由元素组成。元素的数目也可以为0,在这种情况下称做数组为空。所有的数组都是从0开始对元素编号的,这意味着数组内的第1个元素的索引编号是数字0。所有对数组元素的访问都会在运行时上接受检查,如果试图使用编号小于0或者大于数组长度来索引元素就会产生ArrayIndexOutOfBoundsException异常并被扔出。
  
  数组的元素按整型值索引,如以下代码所示:
  int[]  myIntArray = { 9, 5, 6 };
  int   int1 = myIntArray[0];
  int   int2 = myIntArray[1];
  int  int3 = myIntArray[2];
  
  数组对象的长度是不变的。为了改变数组变量的长度,你必须创建另一个数组并赋给变量,如以下代码所示:
  int[]  myIntArray = { 9, 5, 6 };
  System.out.println("myIntArray length = " +myIntArray.length); // 输出结果是3
  myIntArray = new int[] { 3, 6, 4, 2, 8 };
  System.out.println("myIntArray length = " +myIntArray.length); // 输出结果是5
  
  复合数据类型 网管联盟bitsCN_com
  Java语言不支持结构(struct)或联合(union)数据类型。它的复合数据类型是通过类或者接口来构造的,类提供了捆绑数据和方法的方式,同时可以限制对类的私有数据的访问。比如说,如果用C语言,那么汽车(car)就可以如下代码所示用结构来定义:
  struct Car
  {
     char*    model;
     char*    make;
     int      year;
     Engine*  engine;
     Body*   body;
     Tire**   tires; 
  }
  
  以上的示范代码还隐含采用了先前定义的引擎(Engine)、车身(Body)和轮胎(Tire)结构。而采用Java语言,汽车的定义如清单A所示。
  
  以上的示例还假设我们以前都已经定义过CarModels和CarMakes接口以及Engine、Body、Tire、DurangoEngine、DurangoBody和GoodyearTire类。
  
  复合数据类型的初始化
  复合数据类型由构造器内定义的代码实现初始化,构造器在类的创建函数(比如“new”之类)应用到类变量的时候被调用。构造器被调用之前,类的各个成员被初始化为各自的默认值或者显式赋予的初值。清单B 中的程序代码对以上过程进行了解释。
  
  在清单B的代码中,当myClass 的实例用new 运算符创建时,构造器public MyClass()即被调用促使类对自身初始化。初始化的过程如下所示: 网管联盟bitsCN@com
  
  1. 声明“int   myInt;”给myInt赋默认值0。
  2. 声明“AnotherClass   anotherClass;”给anotherClass分配默认值null。
  3. 构造器内的声明“myint = 2;”给myInt赋值为2。
  
  预定义复合数据类型
  Java语言包含了大量的预定义复合数据类型。其中之一的String 类属于java.lang 包。String 类提供的方法执行常用的字符串操作,比如length()、 substring(int beginIndex)、toUpperCase()、toLowerCase()、equals() 等等。另一种常用的Java复合数据类型是Vector 类,它属于java.util 包。Vector 类定义的方法执行可扩展对象数组的常用操作。比如add(int index, Object element)、elementAt(int index)、isEmpty()和remove(int index)等。这些就是一小部分预定义复合数据类型的代表示例。在以后的文章里我们还会进一步对预定义复合数据类型进行讨论。
  
  小结
  除了简单数据类型之外,Java语言中还定义了本文所讨论三种索引数据类型。Java还运行开发人员自己用简单和索引数据类型组合起来创建复合数据类型。用户定义的组合数据类型和Java预定义复合数据类型一道为程序员提供了强大的面向对象工具包。在接下来的文章里,我们会进一步详细地讨论大多数常用的复杂数据类型及其可用操作。我们会首先从Java所特有的集合框架讲起。

TAGs数据   类型   用法   复杂   对象   编程   面向   定义   索引   接口    
 上一篇:养成良好的Perl OOP习惯   下一篇:面向对象编程:Java的简单数据类型
相关文章列表
面向对象编程:Java复杂数据类型用法 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Java面向对象编程实例详解
2.用例子说明面向对象和面向过程的区别
3.JAVA程序员必读:基础篇(1.a)面向对象
4.过程式设计和面向对象设计的比较(组图)
5.JAVA入门教程:对象、类、包和接口
6.面向切面AOP与面向对象OOP
7.Java 入门之开始面向对象的编程
8.养成良好的Perl OOP习惯
9.JAVA程序员必读:基础篇(1.b)面向对象
10.面向对象编程:Java的简单数据类型
最新推荐文章:
1.Static和Final修饰类属性变量及初始化
2.讲述java中内部类的研究
3.Java对象的强、软、弱和虚引用
4.JAVA程序员必读:基础篇(1.a)面向对象
5.面向切面AOP与面向对象OOP
6.Java 学习之的对象初始化的讲究
7.养成良好的Perl OOP习惯
8.面向对象编程:Java复杂数据类型用法
9.VB.NET和Java的OOP设计
10.一些面向对象的设计法则(1)
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的