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++中没有

最新文章

  1. ViewPager+Fragment取消预加载(延迟加载)(转)
  2. MySQL日期数据类型、MySQL时间类型使用总结
  3. mysql主从配置脚本
  4. python time,string 转换
  5. Java-马士兵设计模式学习笔记-桥接模式
  6. iOS8 CLLocationManager 、CLGeocoder获取地理位置
  7. PC-启动慢的解决好方法!
  8. 使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
  9. 一些有用的javascript实例分析(三)
  10. boolean类型相关
  11. TSP问题[动态规划]
  12. OSI七层模型学习笔记
  13. lesson - 12 Linux系统日常管理1
  14. Ubuntu16设置Redis开机自启动
  15. 小程序sitemap配置
  16. BZOJ 1854: [Scoi2010]游戏(二分图匹配/并查集)
  17. jQuery 新添加元素事件绑定无效
  18. test 测试spring容器类
  19. MQTT-SN协议乱翻之实现要点
  20. Java编程之Date的相关操作

热门文章

  1. 为什么Redis是单线程,性能还如此高?
  2. H3C进入目录---用户视图
  3. 【codeforces 764A】Taymyr is calling you
  4. ELK系统分析nginx日志
  5. 浅析 Nginx 网络事件
  6. Excel读取方式优化(浅谈对规律的认知)
  7. JVM探秘:Java对象
  8. 你好,babel
  9. 集合排序Comparable和Comparator有什么区别?
  10. 一次 kafka 消息堆积问题排查