Java和C、C++比较

1、全局变量

Java程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量。Java对全局变量进行了更好的封装。而在C和C++中,全局变量使用不当常常会造成系统的崩溃。

2、Goto语句

Java不支持C、C++中的Goto语句,而是通过异常处理语句try、catch、finally等来代替C、C++中Goto来处理遇到错误时跳转的情况,使程序更可读且更结构化。

3、指针

指针使C、C++中最灵活,也是最容易产生错误的数据类型。由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显示类型转换后,可以访问C++中的私有成员,从而破坏了安全性,造成系统的崩溃。而Java对指针进行了完全的控制,程序员不能直接进行任何指针操作,例如,把整数转化为指针,或者通过指针释放某一内存地址等。同时,数组作为类在Java中实现,很好地解决了数组访问越界这一在C、C++中不做检查的错误。

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来声明一个常量,以实现宏定义中广泛使用的常量定义。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值