1. Java编程语言的主要目标
Java编程语言的主要目标是提供一种易于编程的语言,消除其他语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。利用面向对象的概念使程序真正的成为可视化程序,为使代码尽可能清晰合理、简明流程提供了一种方法。
为提高开发速度和代码可移植性提供一种解释环境,为运行不止一个活动线程的程序提供了一种方式,通过允许下载代码模块,从而在程序运行时也可以动态支持程序改变。为那些保证安全性而装载的代码模块提供了一种检查方法。
2. Java语言的特性
语法简单
面向对象
分布性
可移植性
安全性
健壮性
解释性
多线程
动态性和并发性
3. Java中的面向对象编程
封装:将信息隐藏,隐藏对象的实现细节,将东西包装在一起,然后以新的完整形式呈现出来。
继承和子类:Java中只支持单一继承,在Java中通过接口可以实现多重继承,但接口的概念简单,使用方便,而且不仅仅限于继承,它使多个不相关的类可以具有相同的方法。
多态
模板和泛型(template/generic)
注解
4. Java与C/C++的比较
(1) 全局变量
在Java中,不能在所有类之外定义全局变量,只能在类中定义公用、静态的变量来实现一个全局变量。
(2) goto
Java不支持C/C++中的goto语句,而是通过异常处理语句try、catch、finally等来代替C/C++中用goto来处理遇到错误时跳转的情况,使程序可读性更强且结构清晰。
goto语句是Java中的保留关键字,没有在Java中使用。
(3) 指针
指针是C/C++中最灵活,也是最容易产生错误的数据类型。而Java对指针进行完全的控制,程序员不能直接进行任何指针操作。
(4) 内存管理
在C语言中,程序员通过库函数malloc()和free()来分配和释放内存,C++中则通过运算符new和delete来分配和释放内存。而在Java中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。通过new得到对象的处理权,而实际分配给对象的内存可能随程序运行而改变,Java对此自动地进行管理并且进行垃圾收集,有效防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。
(5) 数据类型的支持
在C/C++中,对于不同的平台,编译器对于简单数据类型如int、float等分配不同长度的字节数,例如int在IBM PC中为16位,在VAX-11中为32位,导致了代码的不可移植性,但在Java中对于这些数据类型总是分配固定长度的位数,如对int型,它总占32位,这就保证了Java的平台无关性。
(6) 类型转换
在C/C++中,可以通过指针进行任意的类型转换,常常带来不安全性。而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。
(7) 头文件
C/C++中用头文件来声明类的原型以及全局变量、库函数等。而Java不支持头文件、类成员的类型,访问权限都封装在一个类中,运行时系统对访问进行控制以防止对私有成员的操作。同时,Java使用import语句来与其他类进行通讯,以便使用它们的方法。
(8) 结构和联合
C/C++中的结构和联合中所有成员均为公有,这就带来了安全性问题。Java中不包含结构和联合,所有的内容都封装在类中。
(9) 预处理
C/C++中用宏定义来实现的代码给程序的可读性带来了困难。在Java中不支持宏定义,通过关键字final来声明一个常量,以实现宏定义中广泛使用的常量定义。