C十十与java有什么不同_干货 | Java与C/C++之间的十个区别!

原标题:干货 | Java与C/C++之间的十个区别!

首先大家应该清楚,Java是由C++发展而来的,保留了C++的大部分内容,其编程方式类似于C++。

但Java的句法更清晰、规模更小、更易学。并且Java从根本上解决了C++的固有缺陷,形成了新一代面向对象的程序设计语言。

139ccc3596d0396c5c2cff7edd54b084.png

既然Java是由C++发展而来,那Java与C/C++之间存在着哪些差异?小编给大家列举了10个Java与C/C++之间的区别之处:

1、指针

Java 没有指针的概念。

在 C/C++中,指针操作内存时,经常会出现错误。

而在Java中是没有指针这一概念的,因此也有效地防止了一系列由指针引起的操作层失误(如指针悬空所造成的系统崩溃),更有利于Java程序的安全。

2、多重继承

Java不支持多重继承。

多重继承,它允许多父类派生一个子类。也就是说,一个类允许继承多个父类。

尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。

所以Java不支持多重继承,但允许一个类实现多个接口。

可见,Java既保留了C++多重继承的功能,又避免了C++的许多缺陷。

3、数据类型

Java是完全面向对象的语言,所有方法和数据都必须是类的一部分。

除了基本数据类型之外,其余类型的数据都作为对象型数据。例如,对象型数据包括字符串和数组。

类将数据和方法结合起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。

而C++将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的负担。

此外,Java还取消了C/C++中的结构和联合,使编译程序更加简洁。

050de26c0cca60faf37bac8a6fcd3a1d.png

4、自动内存管理

Java自动进行无用内存回收操作,不再需要程序员进行手动删除。

Java程序中所有的对象都是用new操作符建立在堆栈上的,这个操作符类似于C++的“new”操作符。

当Java中一个对象不再被用到时,无须使用内存回收器,只需要给它添加删除标签,无用内存的回收器便利用空闲时间在后台运行。

而C++中必须由程序释放内存资源,这就增加了程序员的负担。

5、操作符重载

Java 不支持操作符重载,操作符重载被认为是 C++的突出特征。

操作符重载,就是把操作符(比如'+,-,*,/'这些运算符)赋于新的意义, 来完成更为细致具体的运算等功能。

要实现操作符重载,就要使用操作符重载函数,而运用函数就肯定会存在各种限制条件以及特殊情况。特殊情况就需特殊处理,因此操作符重载还是比较繁琐的。

而根据上述二、三两点,我们可以了解到Java语言是走“简洁风”的。

因此为了保持Java语言的简洁性,便毅然抛弃了操作符重载这一功能。

但是为了避免舍本逐末的情况,Java语言还是可以通过类来实现操作符重载所具有的功能的。

6、预处理功能

C/C++在编译过程中都有一个预编译阶段,即预处理器。

预处理器为开发人员提供了方便,但增加了编译的复杂性。

Java允许预处理,但不支持预处理器功能。

因为Java没有预处理器,所以为了实现预处理,它提供了引入语句(import),但它与C++预处理器的功能类似。

7、缺省参数函数

Java不支持缺省参数函数,而C++支持。

在C语言中,代码组织在函数中,函数可以访问程序的全局变量。

后来C++增加了类,提供了类算法,该算法是与类相连的函数,C++类方法与 Java 类方法十分相似。

由于 C++仍然支持C语言,所以C++程序中仍然可以使用C的函数。结果导致函数和方法混合使用,使得C++程序混乱,而Java没有函数。

作为一个比C++更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中。

事实上,用方法实现例行程序可激励开发人员更好地组织编码。

8、字符串

C和C++不支持字符串变量,在C和C++程序中使用“Null”终止符代表字符串的结束。

在Java中,字符串是用类对象(String 和 StringBuffer)来实现的,在整个系统中建立字符串和访问字符串元素的方法是一致的。

Java字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分。

此外,Java还可以对字符串用“+”进行连接操作。

0fe9b82f336d74538856ab367c6dfe7e.png

9、goto语句

“可怕”的goto语句是C和C++的“遗物”,它是该语言技术上的合法部分。

goto语句也称为“无条件转移语句”,通常与条件语句配合使用,用来实现条件转移,构成循环,跳出循环体等功能。

但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使程序的可读性变差,增加程序调试的难度。

Java不提供goto 语句,虽然Java指定goto作为关键字,但不支持它的使用,这使程序更简洁易读。

10、类型转换

在C和C++中,有时会出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。

例如,在C++中可将一个浮点值赋予整型变量,并去掉其尾数。

Java不支持C++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值