void aMethod() {/*
方法主体
*/}
}
(6) Java
中没有作用域范围运算符“
::”
。
Java
利用点号做所有的事情,但可
以不用考虑它,因为只能在一个类里定义元素。即使那些方法定义,也必须在一
个类的内部,所以根本没有必要指定作用域的范围。我们注意到的一项差异是对
static
方法的调用:使用
ClassName.methodName()
。除此以外,
package
(包)的
名字是用点号建立的,并能用
import
关键字实现
C++
的“
#include”
的一部分功能。
例如下面这个语句:
import java.awt.*;
(
#include
并不直接映射成
import
,但在使用时有类似的感觉。)
(7)
与
C++
类似,
Java
含有一系列“主类型”(
Primitive type
),以实现更有
效率的访问。在
Java
中,这些类型包括
boolean
,
char
,
byte
,
short
,
int
,
long
,
float
以及
double
。所有主类型的大小都是固有的,且与具体的机器无关(考虑到
移植的问题)。这肯定会对性能造成一定的影响,具体取决于不同的机器。对类
型的检查和要求在
Java
里变得更苛刻。例如:
■条件表达式只能是
boolean
(布尔)类型,不可使用整数。
■必须使用象
X+Y
这样的一个表达式的结果;不能仅仅用“
X+Y”
来实现“副
作用”。
(8) char
(字符)类型使用国际通用的
16
位
Unicode
字符集,所以能自动表
达大多数国家的字符。
(9)
静态引用的字串会自动转换成
String
对象。和
C
及
C++
不同,没有独立
的静态字符数组字串可供使用。
(10) Java
增添了三个右移位运算符“
>>>”
,具有与“逻辑”右移位运算符类
似的功用,可在最末尾插入零值。“
>>”
则会在移位的同时插入符号位(即“算术”
移位)。
(11)
尽管表面上类似,但与
C++
相比,
Java
数组采用的是一个颇为不同的结
构,并具有独特的行为。有一个只读的
length
成员,通过它可知道数组有多大。
而且一旦超过数组边界,运行期检查会自动丢弃一个异常。所有数组都是在内存
“堆”里创建的,我们可将一个数组分配给另一个(只是简单地复制数组句柄)。
数组标识符属于第一级对象,它的所有方法通常都适用于其他所有对象。
(12)
对于所有不属于主类型的对象,都只能通过
new
命令创建。和
C++
不
同,
Java
没有相应的命令可以“在堆栈上”创建不属于主类型的对象。所有主类
型都只能在堆栈上创建,同时不使用
new
命令。所有主要的类都有自己的“封
装(器)”类,所以能够通过
new
创建等价的、以内存“堆”为基础的对象(主
类型数组是一个例外:它们可象
C++
那样通过集合初始化进行分配,或者使用
new
)。
(13) Java
中不必进行提前声明。若想在定义前使用一个类或方法,只需直接
使用它即可——编译器会保证使用恰当的定义。所以和在
C++
中不同,我们不会
碰到任何涉及提前引用的问题。
(14) Java
没有预处理机。若想使用另一个库里的类,只需使用
import
命令,
并指定库名即可。不存在类似于预处理机的宏。
(15) Java
用包代替了命名空间。由于将所有东西都置入一个类,而且由于采
用了一种名为“封装”的机制,它能针对类名进行类似于命名空间分解的操作,
评论