JAVA教程 JAVA虚拟机电子书

Java是什么 Java培训

Java教程 Java复杂数据类型用法 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类。

Java教程分页: 共2页: 上一页 1 [2] 下一页

其他Java虚拟机教程:

Eclipse 插件开发法则

Log4j文章的补遗

Struts初体验之实施篇

Ant指南

Tiger系列一:从XML中加载属性

利用树型结构进行排序

HWOTO install and setup Apache Jakarta-T

GENERATING INTEGER RANDOM NUMBERS(幾種

JDK1.5新特性一览

JPetStore项目分析——分析一个典型J2EE应

在BS系统中使用模态对话框(showModalDialog

STRUTS中文问题解决,非FLITER,不需要配置X

Java 按值传递参数

Win2000/xp下Apache2.0.48 Tomcat5.0.19 my

使用DOM解析并打印XML文档

Think In JavaII 中文版下载

struts框架中多行表单提交

发邮件的JAVA程序

在jsp下,一个实现将动态页面转为静态的方

struts开发实践—曲线图实例

java xml中文问题解决方法

Java 类中类属性和对象属性的初始化顺序

决战系统设计--某CMMI Level3公司系统设计

DODS学习日记(三)

XDE中模式驱动的设计与开发(三)

妥善解决mysql中文存取乱码问题以及4.0-

介绍一种XML数据转换工具

《java与模式》读书笔记 ----模式设计的原

jsp数据库连接大全[z]

RCP II:扩展通用工作台(1)

提升JAVA程序的性能

XDE中模式驱动的设计与开发(二)

从一个ConnectionPool的实现看design patte

Eclipse3.0 tomcat5.0 Lomboz3.01调试Servl

我翻译的J2EE平台安全(原著是《J2EE tutor

我考SCJP前的准备工作(一)

做了一个生成JFreeChart的自定义标签SONIC

JacORB 1.3安装

Java 建模:子整体软件开发--宣言

[J2SE 5.0专题][2.4]类型安全的枚举

JMX J2SE5.0实现Web应用的安全管理

2001-11-29 Oracle与Borland携手推进开发者

翻译TIPatterns--太多(Too many)

『JSP学习——全面解析JDBC(4)』

Jakarta Commons项目研究--pool

Eclipse Workbench UI

J2ee和MVC之间的关系,三层结构如何划分

不刷新当前页面,而多个下拉框联动

Java 2D开发技巧之“灯光与阴影”

不能不知道的AOP概念