Java采用了C及C++的语法格式,对于学习过C及C++的程序设计者来说,学习Java将有可能很轻松.但是,如果仔细检查Java语言的许多细节,就会发现Java取消了不少C及C++的特性,并且加入了一些新的特性.这些差异包括:
不再有指针(Pointer)的概念.
这是Java和C/C++在语法上的主要区别之一.在C及C++中,指针的灵活运用将会给程序设计带来极大的便利,但是其灵活性也成为了导致程序不稳定的一个主要因素.配合C及C++的内存管理策略,编程人员必须亲自跟踪自己向系统申请到的内存,最后确认交还给系统.并且在使用指针时,要随时注意是否超过合法的内存空间,造成Segmentation Fault或General Protection Fault这样的问题.
Java提供了一种引用(Reference)类型用来替代指针,通过引用去访问申请到的内存空间,可以确保不会访问不属于自己的内存空间,同时,程序的执行系统也可以动态地做内存垃圾回收工作,将那些被取消引用的内存空间回收给系统使用.这种动态内存分配机制,通过牺牲一定的灵活性,保证了内存分配一定程度上的安全性.
不再有函数(Function)的概念.
Java编程语言中,取消了结构化语言中最重要的部分mm函数.在面向对象程序设计的概念里,对象的数据才是真正的主题,而处理对象数据的方法则必须依附在对象内才有意义.因此函数概念完全是不必要的.这强化了面向对象的开发策略.
不再使用structure、union和typedef.
事实上,在C++中就可以去掉C中的structure和union等对复杂数据的自定义结构类型了,因为类(Class)的定义方式完全可以做到这项功能.而typedef的功能也可以由类来实现.虽然C++这样的设计是为了和C兼容,但是这些毕竟是多余的语言特点,在Java语言中便被抛弃了.
不再有类的多重继承(Multiple Inheritance).
在C++中,多重继承是一项很强的功能,但也是较难掌握的.取消多重继承降低了Java语言的功能,但它使Java看起来更为简洁.同时,Java也提供了接口(Interface)的方式,可以实现部分多重继承的作用.和多重继承的不同之处在于接口并不会定义类方法的内容,以及类中的数据.
不再有操作符重载(Operator Overloading).
操作符重载被看作是C++的一个特色.在C++中,利用操作符重载,程序设计者通过对现有运算符赋予自己的定义,可以使程序看起来更为自然.但是,如果使用不当,也会使整个程序的可读性大受影响.同时,这一功能的存在也并非必要,程序设计者可以定义类中的方法来达到同样的目的.
取消了自动类型转换.
Java是一种强类型检查的编程语言,对于诸如浮点型变量赋值给整型变量这样的情况而言,在C++的语法中是允许的,最多只是在编译时给出警告信息.但是,在Java中,除非写明强制类型转换,否则编译无法通过.
不再有预处理器(preprocessor)功能.
利用C/C++中提供的#define、#include等预处理指令,厉害的程序设计人员可以自己开发一套只有自己才看得懂的宏指令集.从软件工程的角度上看,这对团队开发软件和整个软件的维护都是十分不利的.同时,预编译后的程序代码和程序设计者看到的程序代码是不同的.如果宏指令集有错,编译器产生的错误信息将不会是编程人员所预期的,这增加了程序调试的难度.
取消了goto语句.
在C++中,goto语句已经不被建议使用了,保留goto只是为了和C语法兼容.在Java中goto语句被完全抛弃了,与此同时,Java又扩大了break语句和continue语句的功能,通过使用break和continue,程序流程被允许在多层循环中跳转.
可以这样说,Java编程语言是一种简洁而有效的纯面向对象的编程语言.而C++语言因为要与C兼容(C++语言是作为C语言的一个超集被定义的),所以在面向对象的特性方面不如Java好.详情请进入:

转载于:https://www.cnblogs.com/521taobao/archive/2012/03/17/2402466.html

Java语言和C++语言的差异的更多相关文章

  1. IOS-2-C语言和Objective-C语言衔接学习资料

    前言:在IOS学习中.通常会先学习一周的C语言,两周的Objective-C语言,这是今后开发的最基础最重要的部分,以下给大家分享一下培训课上的精简资料: C语言和Objective-C语言衔接学习资 ...

  2. 混合使用C++语言和Objective-C语言

    如果你的源文件扩展名是.m的,你还需要改成.mm,这样编译器才知道你将会在该文件中混合使用C++语言和Objective-C语言.

  3. C语言和Python语言在存储变量方面的不同

    C语言和Python语言在存储变量方面的不同 众所周知,Python是脚本语言,边解释边执行,而C语言是编译型语言 存储变量: C语言定义变量,变量本身代表的就是大小,任何一个字母或者数字 符号均可以 ...

  4. C语言和go语言之间的交互

    一.go代码中使用C代码 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import "C" 即可在go代码中使用C函数 代码示例: go代码:tes ...

  5. Go 语言和 Scala 语言对比

    我在Google写过Go(自己的业余时间),也在LinkedIn写过Scala.两者都是具有一流的并发特性的现代语言. 下面的回答是基于我编写大规模的软件的经验得出. Go是一种开发模式严格固定,并且 ...

  6. C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

    一.go语言中使用C语言 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import “C” 即可在go代码中使用C函数 代码示例: go代码:testC.go 1 pa ...

  7. Unicode与UTF-8互转(c语言和lua语言)

    1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 全部的信息终于都表示为一个二进制的字符串. 每个二进制 位(bit)有0和1两种状态, 因此八个二进制位就能够组合出 256种状态, 这被 ...

  8. Java语言和JVM的使用说明书

    Java Language and Virtual Machine Specifications 详细介绍了Java语言各个版本的功能/JVM的工作原理 建议详读/深度 各个版本,在线看或者pdf下载

  9. java语言和jdk、jre基础

    Java语言平台 * J2SE(Java 2 Platform Standard Edition)标准版  * 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌 ...

随机推荐

  1. Spring 中使用 WebSocket 笔记

    编写 WebSocket 消息处理类,比较简单的方式就是直接继承AbstractWebSocketHandler,并覆写其中的处理方法,下面为一个简单的 demo public class WebSo ...

  2. PTA | 1012 数字分类 (20分)

    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n ...

  3. python--算法相关

    一.时间复杂度排序 1.O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) ...

  4. python爬取疫情数据详解

    首先逐步分析每行代码的意思: 这是要引入的东西: from os import path import requests from bs4 import BeautifulSoup import js ...

  5. MTK Android Driver :Battery电池曲线

    MTK Android Driver :battery电池曲线 1.配置文件位置: CUSTOM_KERNEL_BATTERY= battery mediatek\custom\\kernel\bat ...

  6. C语言 生日快乐

    #include <stdio.h> #include <math.h> #include <stdlib.h> #define I 20 #define R 34 ...

  7. Linux 文件管理篇(二 目录信息)

    其它在线帮助文档    usr/share/doc root用户的相关信息    etc/passwd 用户密码        etc/shadow 所有用户群组        etc/group 返 ...

  8. 【转自hongcha_717】数组指针和指针数组的区别

    数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的 ...

  9. idle中上传jar包并使用的方法

    创建一个lib目录,将jar包拉到该目录下. 需要导入的Jar包上,点击右键,选择Add as Library…

  10. django 利用ORM对单表进行增删改查

    牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...