A.2 语言差异
既然已经确定了一些有关环境的细节,那么我们将在这里介绍ActionScript、Java以及C++(www.cppentry.com)这三种语言的主要语法和语言实现差异。
A.2.1 使用数据类型
所有编程(www.cppentry.com)语言都提供多种可用的类型供开发人员呈现数据。以下几节对比了ActionScript、Java以及C++(www.cppentry.com)语言中的各种数据类型,并描述了如何进行类型强制转换和确认它们。
1. 基本类型
在ActionScript与Java中它们被认为是基础类型,而在C++(www.cppentry.com)中它们被认为是最基本的类型,是构建程序块不可或缺的基本数据类型。以下列举了这3种语言各自的基本类型:
ActionScript-- String、unit、int、Number、Boolean
Java-- char、short、int、long、boolean、float、double、byte
C++(www.cppentry.com)-- char、short、int、long、bool、float、double、long double、wchar_t
2. 复杂类型
无论是Java还是C++(www.cppentry.com),都有一些复杂的数据类型,就像ActionScript中的高级类型一样。ActionScript中的复杂类型是:
Object
Array
Date
Error
Function
RegExp
XML
XMLList
3. 常量
常量可以在应用程序中定义恒定不变的值。在ActionScript与C++(www.cppentry.com)中,限定常量使用const关键字。在Java中,使用关键字final限定常量。
4. 未声明的
ActionScript与C++(www.cppentry.com)都允许使用某个类型来表示该类型实际未被声明,但将会在运行时确定。当希望实现某个方法,但不明确该方法将接收的输入参数的具体数据类型时,这个功能将会非常实用。
为在ActionScript中指定未声明的类型,可以使用通配符(*)作为其数据类型;在C++(www.cppentry.com)中则可以使用void *。但是对Java开发人员,该语言没有未声明类型。
5. 枚举类型
在C++(www.cppentry.com)中,有一种特殊的enum数据类型,它表示一系列已命名的整型常量。例如:
- enum{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,SATURDAY,SUNDAY};
在前面的代码中,从左到右,已命名的常量表示0~6。还可以显式地设置其值,如下例所示:- enum{ONECENTURY=100,TWOCENTURY=200,THREECENTURY=300};
与C++(www.cppentry.com)类似,Java也支持枚举类型;但与C++(www.cppentry.com)不同,ActionScript却不支持枚举类型。
6. 对象数据类型
在ActionScript中,有一种概念称一切对象都是Object,包括前面已讨论过的基本数据类型。在这方面ActionScript与C++(www.cppentry.com)和Java则是完全不同的。
ActionScript与Java的所有类都继承于Object。关于Object,需要指出一些注意事项。
7. 运行时类型检查
在ActionScript中,可以在运行时检查对象的类型。通过is关键字可以实现该功能。好消息是我们可以保持公共接口的相对通用性和灵活性,然后使用is关键字创建条件代码来运行基于实际运行时对象类型的指定代码块。Java与C++(www.cppentry.com)都不支持运行时类型检查。
8. 对象等价性
ActionScript可以比较两个相等的对象,以确定它们是否为相同的实例。该功能可通过严格的等价运算符(===)实现,它和等价运算符非常类似,但是多了一个额外的等号。考虑严格等价运算符最简单的方式,就是如果两个对象具有完全相同的数据状态,并且如果我们使用标准等价运算符,它们就会被认为是相等的。然而,由于有两种不同的对象实例,因此使用严格等价运算符对它们进行比较则会返回false。严格等价运算符只在ActionScript中可用,而在Java和C++(www.cppentry.com)中是不可用。