您的位置:首页 > 编程语言 > C语言/C++

C++ 与 Java 语言对比

2011-03-08 11:37 176 查看
C++ 与 Java 语言对比



今天一大早来到实验室,突发地想要写点什么!


Java
已经几年了,以前也学习过
C++
,但是从来没有真正对比过
Java

C++

的具体不同。

现在项目要用
VC
,熟悉中不得不把两者做个比较。

这里只是简单罗列出两者在语言上的不同,
Java
偏应用层,
C++
偏低层,做为一个软件开发着,是应该掌握的,这可是我们计算机专业的看家语言,目前市场上
60%
的人会
Java, 40%
的人会
C++
,这篇文章没有具体的展开。如果某本书是以这种方式写的,即实战型的,对有经验的人来说,会接受很快。

请大家始终记得
OOP
的三大精神
---------
封装,继承,多态。

1

Java
是完全封装的,而
C++
的函数是可以定义在
Class
的外部的。从这里就可以看出
C++

OO
思想不够彻底,至少在封装这一点上。

2. C++
中有拷贝构造函数,可以把一个对象的属性
copy
到另一个对象里
,
也叫对象赋值,而
Java
是用
Clone
实现的。

3. Java
的世界是
Object
世界(当然除了基本类型,这是
Java
美中不组的一点),对象之间的关系是
Reference
的,象
C++
中的指针,我们叫他句柄。但在
C++
中对象之间是可以直接赋值的!在
Java
中只是句柄和句柄之间的转换!
Java

C++
都有
this,

C++

this
表示指针,而在
Java
我们叫他引用。但在用法上大同小异。

4. C++
中有所谓的析够函数,而
Java
中也有一个类似的东西叫做
finalize, 是 Object 类的一个方法,

Java
中有个很好的东东就是自动回收机制。而
C++
中你
new
的东西不
delete
的话是不会自动清理内存的,所以
Java
要省事些啊
!

5

C++
的函数有个默认的概念,在
Java
中是没有的。但
JDK1.5
的范型的
String…
参数似乎有点象
, Java
在最初抛弃
C++
一些思想之后,现在似乎也慢慢也入了一些东西!

6. static
关键字
, C++

Java
中意思基本相同,
C++

static
变量必须在类外初始化。

7. C++
中的对象成员要在本类的构造函数之前构建,而
Java
没有这个规则,
Java
的对象和普通变量一样简单。

8. C++
有个常量修饰符
const,

Java
中一个常量一般是用
static + final
等价实现。

9
.可能写
Java
的朋友很不习惯的就是
C++
的每个类都有个分号结尾。

10

Java
有个很好的东西叫包,使得全世界的类不会发生冲突。在
C++
也有一个类似的东西叫做作用域运算符

::

表示。

11

Java
在子类的方法重载中要想调用父类的同名方法只要用
Super
关键字,而在
C++
中要用基类名
+
域运算符(
::
)以达到同样的效果。

12. C++
有多重继承,而在
Java
中只是单根继承,但是用
Java
的接口可以达到类似的效果。多重继承有二义性,但可用虚基类(
virtual
)解决该问题。

13. Java
中的多态完全是继承的原因,而
C++
除了继承又引入了虚基类和虚函数(实现了运行时多态性)的概念。

14. C++
中声明了纯虚函数的类为抽象类,而在
Java
中有
abstract
声明的
Method
(当然类也要用
abstract
修饰)
就是抽象类
,
在抽象类方面
Java
原自
C++,
即两者观念上是一致的。

15

Java
中的对象全都是
new
出来的,而
C++
不同,当然他也有
new
功能,
Java
中理论上你可以随意
new Object,
他有
gc
这个对象管家,而
C++ new

Object
你一定要手动
delete
他。

16

C++
中有运算符重载
, Java
里只有
+
号有重载的意思,不过在
JDK5
中也有其他的运算符重载,比如两个类对象可以直接相加。
C++
可以将自定义类型强制转换为基本类型,如将一
Test
类的对象,强制转换为
int
类的对象,要达到这个效果就要用到
operator
关键字,
Java
除了
8
大基本类型以外都是
OO
的,但
Java
也提供了基本类型的对应
Class
类型。

17

C++
中有模板的概念
(
类模板,函数模板
)
,在早期的
Java
版本
(1.4
之前
)
,没有模板的概念,但
1.5
引入了范型,与模板的思想类似,这可是好东西。如果你看
Java
原码库,你会发现他变化的好大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: