网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.递归删除与给定的文件名不符的文.
.Jbuilder配置mssqlserver2000 JD.
.介绍JSR184(3D)中的光线概念.
.读取数码照片中的Exif信息.
.状态栏动态提示超链接地址的效果.
.体验 JDBC 2.0 规范的一些新东西.
.内存泄漏,走开 轻松搞定Java内存.
.JBuilderclass文件的Module引用.
.精通Hibernate之映射继承关系八.
.hasOwnProperty 方法.
.Java JFormattedTextField 组件的.
.功能完善的Java连接池调用实例.
.J2EE1.4新特性之Servlet2.4新特性.
.J2ME 3D技术简介.
.在RCP中实现用托拽打开Editor.
.Struts的文件上传.
.Java.util包简介如何开发应用之一.
.分享如何写自己的Type3 JDBC 驱动.
.教您如何用Zeus实现XML-Java的数.
.一篇不错的介绍Java Socket编程的.

Java复杂数据类型用法

发表日期:2008-1-5



  作者: BUILDER.COM

在这篇文章中,我们将讨论Java语言中的复杂数据类型。其内容涉及到初始化过程、默认初值和某些针对复杂数据类型的操作。

索引



同简单数据类型的定义一样,Java虚拟机(JVM)还定义了索引(reference)这种数据类型。索引类型可以“引用”变量,由于Java没有明确地定义指针类型,所以索引类型可以被认为就是指向实际值或者指向变量所代表的实际值的指针。一个对象可以被多于一个以上的索引所“指”。JVM从不直接对对象寻址而是操作对象的索引。

索引类型分成三种,它们是:类(class)、接口(interface)和数组(array)。索引类型可以引用动态创建的类实例、普通实例和数组。索引还可以包含非凡的值,这就是null 索引。null 索引在运行时上并没有对应的类型,但它可以被转换为任何类型。索引类型的默认值就是null。




类(Class)指的是定义方法和数据的数据类型。从内部来看,JVM通常把class类型对象实现为指向方法和数据的一套指针。定义class类型的变量只能引用类的实例或者null ,如以下代码所示:
MyObject anObject = new MyObject(); // 合法
MyObject anotherObject = null; // 合法
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];
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


复合数据类型

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()即被调用促使类对自身初始化。初始化的过程如下所示:

声明“int myInt;”给myInt赋默认值0。
上一篇:java高级多线程编程(一)--关于线程的停止问题 人气:933
下一篇:Java和以网络为核心的未来 人气:505
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐