【java面试】java和C/C++的区别
来源:互联网 发布:查开放房记录软件 编辑:程序博客网 时间:2024/06/05 09:47
1.内存分配
java中对内存的分配是动态的,JVM自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用.按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了了由于内存管理方面的差错而导致系统出问题.而C语言通过malloc()和free()这两个库函数来分别实现分配内在和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存.
2.数据类型的长度
Java对每种数据类型都分配固定长度.Java对每种数据类型都分配固定长度.比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性,而Java则具有跨平台性(平台无关性).
3.指针
编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
4.继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
5.数据类型及类
Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。
6.操作符重载
Java不支持操作符重载。操作符重载被认为是c++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
7.预处理功能
Java不支持预处理功能。c/c++在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。
8.goto语句
“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无 条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
9.异常
java中有异常机制用于捕获异常,为c++中没有
- 【java面试】java和C/C++的区别
- java和c的区别
- Java和C的区别
- C和JAVA的区别
- C和JAVA的区别
- c和Java的区别
- C、C++、C#、Java的区别和联系
- c、c++、java的区别
- java C的区别
- c++,java的区别
- java和c/c++的区别
- Java和C、C++的区别
- java语言和C语言的区别
- Java和C语言,c++的区别
- C和JAVA中数组的区别
- JAVA和C/C++的一点区别
- Java和C语言,c++的区别
- java和c/c++的区别
- javascript设置无缝滚动图片
- python进行独立样本t检验
- OCR实时扫描识别中英文--tess_two在Android的使用
- stm32 多通道ADC+DMA采集
- 简单轮播图
- 【java面试】java和C/C++的区别
- Xpath语法(二)
- 关于edittext 输入的软键盘处理
- JVM学习第一篇
- CreateJs系列教程之 EaselJs_6_绘制动画走秀(spriteSheet)
- 【玖哥乱弹】如何做一个合格的Android面试官
- 循环冗余校验-CRC校验
- Linux学习笔记五
- Android自定义View——滑动变色指示器