从c++到java

C++Java

C++Java都是面向对象的语言,JavaC++衍生而来,摈弃了C++中复杂或者有缺陷的一些特性,又添加了一些新的特性和机制,力求使这种语言功能强大,夸平台,而又简单易用。有人说,Java是一种VB版的C++,功能强大,又简单易学。如果你用过VB,我想体会会更深一些。本文主要想通过比较JavaC++的不同之处,对那些从C++转到Java的程序员提供一些帮助。如果不了解C++,就到此为止吧。如果你熟悉C++,而又要开始Java项目,那就请继续吧,相信下面的话会对你有帮助。

夸平台

   C++是跟平台相关的,就是说windows下写的code,在linux下必须重新编译才能运行。Java是夸平台的,也就是Java声称的“一次编写,到处执行”,也有人说是“一次编写,到处修改”,这也许有夸张的成分,无论如何,通过虚拟机实现跨平台都是Java的一个卖点。

指针

这个你再熟悉不过,使用灵活,功能强大,不过也肯定吃过它的苦头,什么空指针,野指针,都会有问题。在Java中,对程序员来讲,没有指针的概念了,这就省去了不少麻烦,比如:

const int a=2;

const int * pi1=&a;

int * const pi2=&a;

const int *const pi3=&a;

请说说pi1,pi2,pi3的区别吧,是不是好像在哪里面试时遇到过,Java中没有这样的节目了。顺变说一句,constJava中,也不支持了。

内存管理

C++中,通过运算符newdelete来分配和释放内存。记得要成对使用,否则,多次delete一块内存,行为未定义,未定义就是什么都可能发生,比如系统崩溃。如果new了一块内存,不delete掉,就会有内存泄露。相比C++Java中要简单的多,只有一个new来分配内存,Java的自动垃圾回收机制会为你做好剩下的事情,听起来可真不错呀。这可是Java的又一大卖点呢。

栈对象

在一个函数的内部,直接通过类名定义的对象,会在栈里创建,如:

Class car{

   car();

  ~car();

…..

}

Void testFunction(){

 Car mycar;

}

对象mycar就在栈里创建,在Java中,这样的语法是定义了一个类Car的一个引用,并没有创建任何对想像,Java中,创建对象只能new出来,对象会在堆上创建。C++中返回局部对象的指针或引用的问题就不会再有了。

多继承

用多继承来描画现实世界中,有些事物的关系是必要的,但多继承在实现上回引起一定模糊性(具体可参考相关C++书籍)。为了改善这些,Java中不再支持多继承,它提供了一种替代的方案,我们可以通过单继承,再实现interface来达到同样的目的,像这样:

 class myClass extends baseClass implements InterfaceAInterfaceB{

}

 

全局变量

C++中,这个家伙使用方便,但同时又很不安全,毕竟不管在那里,不管谁都可操作它,它也往往成为系统崩溃的罪魁祸首。 Java对此作了限制,Java中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用(public),静态(static)的变量来实现一个全局变量。Java对全局变量进行了更好的封装。

Goto语句

任何一本介绍C++的书,也许都会告诉你,尽量不要使用Goto,因为他会降低程序的可读性,正因为如此,Java中不再支持Goto语句。对于多层循环的跳出,可用代表号的break或者continue,与错误处理相关的,可用Java的错误处理机制的trycatchfinally

结构和联合

C++中的结构和联合中所有成员均为公有的,这就带来了安全性的问题。Java中不再支持它们了,所有的内容都封装在类中。

宏定义

C++中用宏定义来实现的代码给程序的可读性带来了困难。Java中,不支持宏定义了,它可以通过关键字final来声明一个常量,以实现宏定义中广泛使用的常量定义。

总之,这两种语言有多的相同的地方,但同时也有很多的不同,对于从C++转到Java的程序员,多比较两种编程语言的不同之处,就可以较快的上手。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值