Ⅰ 在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或者大于数组长度来索引元素就会产生异常并被扔出。

数组的元素按整型值索引,如以下代码所示:

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所示。

Listing A

class Car

implements CarModels, CarMakes
{
private int model = DODGE;
private int make = DURANGO;
private int year = 1999;
private Engine engine = new DurangoEngine();
private Body body = new DurangoBody();
private Tire[] tires = { new GoodyearTire(),
new GoodyearTire(),
new GoodyearTire(),
new GoodyearTire() };
}

以上的示例还假设我们以前都已经定义过CarModels和CarMakes接口以及Engine、Body、Tire、DurangoEngine、DurangoBody和GoodyearTire类。

复合数据类型的初始化

复合数据类型由构造器内定义的代码实现初始化,构造器在类的创建函数(比如“new”之类)应用到类变量的时候被调用。构造器被调用之前,类的各个成员被初始化为各自的默认值或者显式赋予的初值。清单B 中的程序代码对以上过程进行了解释。

Listing B

class MyClass
{
int myInt;
AnotherClass anotherClass;

public static void main(String[] args)
{
MyClass myClass = new MyClass();
}

public MyClass()
{
myInt = 2;
}
}

在清单B的代码中,当myClass 的实例用new 运算符创建时,构造器public MyClass()即被调用促使类对自身初始化。初始化的过程如下所示:

声明“int myInt;”给myInt赋默认值0。
声明“AnotherClass anotherClass;”给anotherClass分配默认值null。
构造器内的声明“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)等。这些就是一小部分预定义复合数据类型的代表示例。在以后的文章里我们还会进一步对预定义复合数据类型进行讨论。

Ⅱ 1. Java的复合数据类型有那几种

顾名思义,就是一些由基本数据类型复合而成的数据类型,如String,数组,一般的class类,接口啊等,除了基本的都是由基本类型复合而成的数据类型,不知道这样说可不可以理解

Ⅲ 在JAVA语言中,什么是复合数据类型

比如说类啊,就是复合数据类型。除基本数据类型以外的都应该是复合数据类型

Ⅳ Java编程中 甚么是复合型数据类型

一种不属于系统内部本身存在的类型。
除了8种基本数据类型外,都可以称为复合型数据类型。

Ⅳ Java的复合数据类型有 : 类、数组和______等。 Java的简单数据类型有 : 数值类型

复合数据类型包括:
class
interface
数组
String (预定义复合类型)

Ⅵ java中什么是复合数据类型

除了8种基本类型
byet short int long float double char boolean
以外所有的引用都是复合数据类型引用

Ⅶ java中基本类型和复合类型有哪些

1.Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。

2. 编译源文件 javac.exe 执行类文件 java.exe

源文件-- ( javac编译 )--> 字节码文件 ----( java执行 )--> 程序运行

3. Java定义了8个简单的数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(boolean).

[ 注意 String 是一个类,不是基本类型数据 ]

4种.

private 只能创建类可用 packaged 同包可用,
protected 继承类可用,即使不同包 public 全部可用

5.

class HelloWorld
{
public static void main(String[] args) //类的主方法首部定义
{
System.out.println(" HAPPY NEW YEAR! "); //由系统提供的方法
}
}

6.

import java.awt.*;
import java.applet.*;
public class JavaWorld extends Applet
{
public void paint(Graphics g )
{
g.drawString("hello applet!",5,25);
}
}

//以下是html代码,必须和JavaWorld.java 放在同一文件夹下,通过IIS访问

<html>
<body>
<applet code="JavaWorld.java" width=100 height=100>
</applet>
</body>
</html>

7.

public class Jia
{
public static void main(String arg[])
{
int i,sum=0;
for(i=101;i<=100;i++)
{
sum=sum+i;
}
System.out.println(sum);
}
}

8.

public class Cheng
{
public static void main(String arg[])
{
int i,sum=1;
for(i=1;i<=5;i++)
{
sum=sum*i;
}
System.out.println(sum);
}
}

///////////////////////////////////////////////////////

代码全部可以运行,如出错,网络上hi我.

Ⅷ java中复合数据类型几个常见的方法

建议重点掌握容器类型,主要是List和Map,这两种类型在实际编程的时候应用极多,要掌握这两种类型对象元素的插入、删除、修改、排序、检索等操作,具体方法一方面可以查看Java的标准API文档,一方面可以在开发工具(如Eclipse)中该类型对象后面按下“.”运算符,会自动弹出该类型对象的所有方法。

Ⅸ Java语言中复合类型有3中包括 :数组类型 和什么

数组 类 接口