首页

文章

C语言和JAVA有什么共同点么?

发布网友 发布时间:2022-03-01 03:34

我来回答

4个回答

热心网友 时间:2022-03-01 05:03

Java程序中的每个变量要么是基本数据类型(boolean, char, byte, short, int, long, float, double),要么是对对象的引用

C++有许多种基本类型,额外还有struct, union, enum, 数组和指针,C++指针可以指向对象,也可以不指向对象

Java没有枚举、联合类型,因为Java认为没有必要。将可有可无的语言元素去掉是Java对C/C++做出的一大改变,因此,普遍认为Java较C++更轻便,更精简

Java采用Unicode字符集,C++通常用ASCII字符集。但ASCII是Unicode的子集,对于习惯于ASCII的程序员感觉不到区别

Java中的boolean类型不能转换成其他类型,反之亦然。C++最近引进了bool类型,代表布尔类型,整型也作为逻辑判断

模板是一种“泛型编程思想”,它有别于“面向对象编程思想”。C++在很大程度上已经支持了这种新型编程方法,特别是STL的出现
Java目前仍未支持泛型编程,不过据说Sun公司有在Java中引入模板的计划

C++支持“运算符的重载”,这是它的一个很重要的多态特征,是数据抽象和泛型编程的利器。它允许直接对对象进行四则运算,正像基本数据类型那样
Java不支持这种多态机制,也是为降低复杂性

两种语言都支持方法重载(overloading)

在C++中,为了允许运行时动态决定哪个函数被调用,一个函数必须用virtual修饰。virtual关键字被自动继承,用以支持多态

凡是没有用virtual修饰的成员函数(包括static)都是静态绑定的,即在编译时决定调用哪个版本

而在Java中,除了static、final、private是静态绑定以外,所有方法一律按动态绑定处理
C++中有“拷贝构造函数”的概念,在三种情况下,自动调用它
用一个对象初始化另一对象
对象作实参进行函数调用
对象作函数的返回值

通常,当一个对象需要做“深拷贝”(钱能:《C++程序设计教程》)时,我们需要为它事先定义“拷贝构造函数”、“赋值运算符的重载函数”和“析构函数”;否则编译器将以“按位copy”的形式自动生成相应的缺省函数。倘若类中含有指针成员或引用成员,那么这三个默认的函数就隐含了错误

Java则没有这种语法结构和语义逻辑
C++支持inline函数,可以避免函数的堆栈调用,提高运行效率

Java无这种语义

C++中,构造函数的初始化列表是这样使用的:首先按继承顺序调用基类的构造函数构造基类对象,然后按声明顺序调用成员对象的构造函数构造成员对象,最后对列表中出现的成员变量做初始化
Java不采用初始化列表这种构造机制
它们的构造顺序基本一致:
静态变量初始化
静态初始化块(Java)
调用基类的构造函数构造基类对象
实例变量的初始化
构造函数的其余部分
Java使用abstract关键字修饰抽象方法或抽象类

C++的对等语法是“纯虚函数”和“抽象类”

两者都使用抽象类作为继承层次中的基类,提供一般概念,由子类实现其抽象方法,且抽象类都不能被直接实例化为对象
Java中有final关键字,修饰类、方法或变量
final类不能被继承
final方法不能被子类覆盖
final变量就是常量

C++中没有这个关键字,常量可以使用const或#define定义
const还可以修饰成员函数,即“常成员函数”,当一个const成员函数修改成员数据,或调用非const成员函数时,编译器会报错
我们应将不修改成员数据的函数声明为const
Java和C++中的static关键字语法和语义基本相同

static成员变量又叫类变量,被类的所有对象共享
A::x (C++):必须在类体外初始化
A.x (Java):必须在类体内初始化
static成员方法又叫类方法,访问static变量
A::f( ) (C++)
A.f( ) (Java)
两者都有内部类和局部类的语法和语义

Java中没有友元函数和友元类的概念,严格支持封装,不允许外部方法访问类的私有成员
而C++支持friend关键字,允许外部方法访问类的私有成员,因此不是一种纯面向对象的编程语言
Java中类或interface可以用public修饰,也可以不修饰;而C++类不能修饰

三种访问权限的语义相同,语法略有差别

C++中还有继承权限修饰符,Java则没有
class A: protected B, public C (C++)
class A extends B (Java)
Java有super关键字,指代父类对象,通常被用于调用父类的构造方法或一般方法
C++则没有super关键字

两者都有this,指代当前对象

Java有package的概念,可以将类组织起来,便于打包和部署,也有利于类的安全。C++没有这个概念,一个类可以被任意类访问
Java applet可以被嵌入HTML文档中,然后由Web浏览器下载和执行
Java API有对网络通讯的特别支持

C++则无内置网络功能
C++程序员必须显式地实现动态内存管理,在析构函数中用delete运算符或free( )函数释放对象和其他动态分配的数据空间,否则会造成“内存泄露”

而在Java中,垃圾收集是自动的。当对象的最后一个引用变量被释放掉,这个对象就成为垃圾收集器的候选对象了
因此Java不支持析构函数
finalize( )方法主要被用来释放先前打开的非内存资源,如文件句柄
Java源代码被编译成字节码(.class文件),字节码是一种只有JVM才能识别的二进制低级代码,它与具体的处理器无关,要由安装在OS之上的JVM解释执行,转换成相应平台的机器码,因此Java是体系结构中立和跨平台的

而C++直接被编译成底层平台的二进制机器码,由CPU执行,是平台相关的

因此,当解释执行时,Java程序速度更慢
Java语言支持多线程,允许并发线程的同步与互斥操作
C++则没有这种内在机制

Javadoc.exe可以将Java程序的内容和结构转换成HTML格式的文档


C是面向过程的,C++和JAVA是面向对象的

主要是差别对象的概念

JAVA和C++人说的比较多的主要的是有没有指针的差别

java简单易学但效率不高!
c++相反有点麻烦效率高!
还有就是Java的可移植性好!能实现跨平台,即一次编写到处适用!

C是面向过程的程序设计语言。C++是面向对象的程序设计语言,不过C++语言保持了对C语言的兼容,也就说是在C++程序可以不用修改的插入C语言代码。JAVA也是面向对象的程序设计语言,主要是实现平台无关性,它的出现主要为了实现对一种智能终端的编程(有人设想在不远的将来,你的冰箱有可能自己知道里面的东西已经不多,按着你的需要向应的供货商进行订购。在你上班的时候也可以通过互联网开启你家里的微波炉,回到家就好吃的东西^_^)

还有
JAVA主要应用于上层,用户使用JAVA不需要知道网络协议的细节,只需要知道如何调用相关接口就是了
C和C++主要应用于网络底层,用C和C++的程序员必须对协议有相关认识~

至于 那个简单,似乎应该说没有 难易之分。
只要你认真去学都差不多。

热心网友 时间:2022-03-01 06:21

C语言:结构化编程语言,速度快,效率高(仅次于汇编语言的速度)

C++语言: 在兼容C语言的基础上扩展了面向对象的支持,属于不纯的面向对象语言(比如定义一个整型可以这样写 int i = 0; 或者 int i = new int(0);)

JAVA语言:针对C++面向对象的机制的简化改良而产生的一种纯面向对象语言,一切皆对象(说实话,JAVA真的不难,前提是如果你学过C的指针)。

看兴趣了,c/c++主要还是在系统级别的应用或操作系统级别的应用上,java和最新的dotnet都是在网络应用领域的开发上,面向的级别不同,看你想学什么了,比如,C/C++与系统及硬件结合的紧密一些,在c/c++中的int类型在不同的机器上的位数是不同的(实际上取决与编译器),但JAVA不是这样的,它规定在所有的系统中int类型都是32位的(所有系统上的虚拟机都是这样编译JAVA代码的)。 个人认为c/c++更适合做算法或专业领域的应用程序,当然,写操作系统当然是可以的(不过现在没有谁去做操作系统了吧,没有商业意义啊。。。盗版5元。。。)

JAVA么,比较适合搞网络开发(前景最乐观的方向),桌面级的应用就免了吧,比较复杂,再加上JAVA的速度不是强项,基本告别了漂亮的桌面,不过也有列外啊,eclipse就是JAVA写的,还有SUN公司的netbeans,功能那个叫强~~至于嵌入式应用程序开发,目前在中国来说工资是最高的,但也是发展前景不很明确的一个方向(比如手机游戏开发,注意,这里只是说嵌入式应用程序,不是操作系统)。

要学JAVA就要准备吃苦了,JAVA的技术标准太庞大(JAVA EE),用于实现网络的应用的架构JSP+SERVLET,这是最基础的,再高级一些就是struts架构(基于MVC),再就是spring架构 等等,在网络应用中,JAVA的优势非常明显,开源,可扩充性好,适合做大型项目,不过相对开发周期也会长一些。

热心网友 时间:2022-03-01 07:56

C语言是纯面向过程的编程语言,而JAVA是纯面相对象的编程语言。。。。两种语言有着很大的不同,如果硬要说有什么共同点的话,就是也些语法规则有相同点啦。。。。比如:变量都要先定义再使用之类。。。
一般是建议从C语言入门的,我感觉学编程,当你学会一门语言后学习其它语言就不难了。。。。当然,从面向过程到面向对象还是个比较大的过渡的。。。。
直接学习JAVA也行,毕竟这些东西也没有人规定要先学哪个再学哪个的。。。

热心网友 时间:2022-03-01 09:47

所有的计算机高级语言的语法结构都不尽相同。c语言是纯面向过程的计算机语言,java是纯面向对相的,它们是两个极端啊!当然是c好学点了,c可以说是所有高级语言的基础,把c弄通了,其他的语言也就好办了。也有直接学java的,但这种强人毕竟还是凤毛麟角啊
视频相册制作软件如何做视频相册? 用word2007自动生成目录后,目录上始终有个“ 更新目录”的框,怎么去... Word2007目录怎么删除正文 手机不能横屏了是怎么回事? 庞贝柱的结构样貌是怎样的? 埃及庞贝柱景点描述 庞贝柱是怎样的历史? 埃及庞贝柱历史追溯 庞贝柱是个什么样的景点? 庞贝柱是为为了答谢谁而建的? 属蛇穿什么转运最旺运 属蛇什么颜色转运最旺 属蛇的人什么颜色转运最旺 英国查理一世时期君主专政的特征 增值税专用发票开错作废证明怎么写 女主为了救男主被拔掉指甲,被活埋,但男主却认错了人,这本小说叫... 什么地方能读到法拉奇的小说男子汉 高级职称有什么待遇 职称高级相当于什么? HUAWEI 华为 AM185 入耳式有线降噪耳机-适用对象 华为FreeBuds Pro有线充版-入耳式真无线动圈主动降噪蓝牙耳机(陶瓷白... HUAWEI 华为 FreeLace Pro 入耳式颈挂式动圈主动降噪蓝牙耳机 曜石黑... HUAWEI 华为 FreeBuds Pro 入耳式真无线动圈主动降噪蓝牙耳机 墨韵白推... 华为Freebuds 3 无线充版半入耳式真无线蓝牙耳机(碳晶黑)-详细介绍... HUAWEI 华为 FreeBuds 悦享版 入耳式无线蓝牙耳机-详细介绍 如何评价华为新旗舰tws耳机freebudspro? HUAWEI 华为 FreeBuds Pro 无线蓝牙耳机推荐 字符串"\\\"ABC\"\\"所占内存字节的长度 怎样挑选千元内的羊绒大衣? 现在思科的CCNA,CCNE,CCIP的考证费分别是多少啊,通过率怎样 长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 淘宝客必备的九大工具有哪些? 电脑里硬盘如何共享怎么实现多台电脑共用一块硬盘 两台电脑一个硬盘两台电脑是否可以同时用一个硬盘 共享电脑硬盘怎样设置局域网电脑硬盘共享 现在下载歌曲好还是不下好 故障码P033D的含义解析 切菜机多功能型切菜机 scanbox三维扫描仪 苹果13没有删除的备忘录怎么恢复? iphone备忘录永久删除怎么恢复?iphone备忘录恢复最近删除文件方法介绍... C语言和JAVA语言,有什么不同啊?用途有什么不同? 想学好Java有哪些建议?需要掌握哪些技能? Java需要学习哪些内容? 电子商务报什么职称好? 浙江湖州有什么方便带走的特产吗? 浙江特产有哪些 杭州,可以带走送人的,吃方面的特产有哪些? %在c语言中起什么作用 C语言中'#"作用 C语言中“&”是什么意思?什么作用? C语言的实际作用是什么? &在c语言中的作用是什么 c语言中!起什么作用 C语言中 ‘##’的作用是什么 - C / C++ - c语言的作用是什么? c语言的主要作用是什么 C语言中%的作用是什么? 运维工程师的合格标准: 本人面试的javaweb,这是在做linux运维吗? java工程师可以做it运维和技术支持吗 c语言和java有什么不同之处? Java语言和C语言有什么不同 电饭煲里的塑料蒸笼过热烧化了粘在不绣纲锅底,怎么去除?_问一问 手机安装软件提示证书无效,证书过期,证书错误的解决方法。 java <<=是什么意思 考健康管理师都需要学习哪些知识内容呢? 考cpa需要什么基础知识 我想考网络工程师需要学习哪些知识??? 营养师是怎么考的?需要学习什么知识呢? 河南南阳特产有哪些土特产 南阳拿什么土特产送人 南阳这有什么土特产?好吃的,又容易带? 南阳的特产是什么 CA证书过期了怎么办啊? 数字证书已经过期怎么更换? 我是软件专业出来的,听他们说已经属于中级工程师,是否是这样。 为什么我改不了?完成账号风险评估,显示未满足 为什么我的是风险评估? 为什么我修改上面一直显示的是风险评估一周之后已经过了一周了呀? 已经用了几年的微信,修改,风险评估显示未满三天?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com