4000336031 微信 li1377174255

西南区Java培训机构

Java和C++比较

来源:西南区Java培训机构 发布时间:2017/4/10 15:21:05

  对象创建:Java和C++比较

  Java和C++都是面向对象的编程语言,然而Java和C++在创建对象时却存在不同的方式,由于方式的不同导致在内存中管理的不同。

  1、C++创建对象方式

  在C++中我们可以采用如下两种方式来创建对象,

  1.Dog dog;//Dog为类名

  2.Dog*p=new Dog();

  这两种方式在C++中都能完成对象的创建,但是在内存中的处理却完全不同。

  对于种方式而言,dog是被存储在栈中的,占用的大小是Dog类中成员变量占用内存的和,此处不包括成员方法,因为成员方法是存放在公共存储区以便所有该类的对象都可以访问的。

  对于第二种方式则不同,该方式使用了指针,在定义*p时在栈中开辟一个4字节的空间,new Dog()时在堆中开辟一块空间,然后将该空间的首地址赋值给*p,这样,通过*p就可以找到对象在堆中的任何成员方法了。

  2、Java创建对象方式

  在C++中我们有两种创建对象的方式,而在Java中只提供了如下的一种方式,

  1.Dog dog=new Dog();

  JVM在进行内存管理时,首先会在栈中给dog分配一个空间,当new Dog();后会在堆中开辟对象的实际空间,然后将dog指向堆中的空间,这样我们就可以方法对象的成员变量了。

  3、总结

  通过图2和图3我们会发现Java创建对象的方式和C++创建对象方式的第二种很像,除了我故意写的p和dog还有数字,其他的都是一样的。是这样的,他们的确很像,但是却不完全相同,在C++中p是一个指针,通过指针我们可以访问内存中的任何地址,可以肆意的对内存做处理,然而在Java中dog是一个引用,可以理解成是C++中指针的一个封装,我们不可以想在C++中用指针那样在Java中直接的进行地址++操作,这样一来就增加了内存的安全,这是C++和Java的很大不同。

领取试听课
每天限量名额,先到先得
温馨提示:为不影响您的学业,来校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
  • 详情请进入 西南区Java培训机...

关于我们 | 招生信息 | 新闻中心 | 学校动态

版权所有:搜学搜课(www.soxsok.com)