c语言与java区别
这个问题很多人问我了,你可以在网络知道上搜索,有很多都是我敲的,并且都是最佳答案。今天我就再帮一次兄弟,不过回答保证更为精准。
这个C语言是面向过程语言,C++是混合型语言,java是面向对象语言。很多书中吧C++作为面向对象语言来讲,但是实际上C++不是纯种的面向对象语言。java是面向对象的代表。如果你听说过C#的话,那么C#是面向对象的终结。
当然这些对于初学者来说不太明了什么是面向对象、什么是面向过程。而我在这里解释也会让你更加懵懂。所以撇开什么是面向对象什么是面向过程,单单介绍他们实际应用区别:
C是一门非常干练的语言,一切采用函数的形式完成,你可以把所有需要的功能采用函数的形式完成,然后在主函数main中调用。学起来容易,几乎用三两天就可以学会。一般用来教学学习算法,数据结构等。同样这也造成了它的应用范围局限在小程序中,只能是针对小规模的东西开发:比如DOS程序,嵌入式开发等。
C++是在C语言的基础上扩展的,所以一般C++会兼容C语言库。C++是因为用C语言开发项目中会遇到很多团队合作问题,导致团队的工作效率下降。在此基础上迫切需要降低软件开发团队成员之间彼此的干扰性,使得每个工程人员的代码竟可能不影响他人。最后C++便应用而生了。C++主要是其中集成了类地概念,可以将所有的东西封装在类中,类中的私有成员不可被别人访问,这样就有效地解决了代码互干扰性。
java是汲取C++的长处而诞生的,这个语言采用完全面向对象的概念,将所有的功能封装在类中,而不像C++部分封装。由于java采用跨平台性,使得更容易被移植,在互联网要求多终端能够互相访问成为可能,这便形成了java平台今日的盛况,在互联网方面几乎无人可敌。
学习难易程度来讲C++非常难,即使有5年工作经验的C++工程师也未必能够熟练应用C++,C语言易掌握,但是应用起来难度不下于C++,因为C语言几乎是对硬件直接写代码,一般来说会使得代码非常庞大,增加了开发人员的工作量。java因为封装了很多功能,所以几乎开发效率相当高。
❷ c语言和java的区别
相同的地方:
1、语法类似:
由于Java可以算是从C++发展而来的,因此Java与C语言的语法比较类似
2、编程的熟练程度就是对语言程序库的掌握程度:
从某种程度上来说,编程语言都是由语法和相应的程序库所构成,Java有自身的类库,C语言则有标准库。所谓的编程,就是使用与语法来调用和组合程序库中的函数。
不同的地方:
1、内存管理
在Java中,基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说你只管借东西,不用管归还,因为与有人当你的跟班,在你不使用的时候就把东西归还了,不过这个过程还是有的,只不过是JRE作的而已。
但是C则不同,如果你想用,你可以用malloc之类的方法申请内存,当你使用完了,因为没有跟班的,你需要自己把这块内存归还回去,也就是调用free方法来完成这个任务。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了,不如面向对象和具有内存回收功能的Java那么直观了。对于这个问题,在C语言中,有几种解决方案:
(1)
在调用者中先分配好内存,作为参数传入到被调用的函数中
(2)
在被调用的函数中分配,使用完后在调用者中释放
(3)
在被调用函数中使用static变量,可以将该变量返回
2、面向对象
Java的面向对象的特点很明显,而C则是一个地道的结构化语言。
Java中有一个字符串类String,
通过调用
String.length()就可以知道字符串的长度,但是在C语言中,则需要调用函数strlen(str)来得到字符串(字符数组)的长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。
3、名称空间
Java通过包(package)来实现名称空间,在C语言中,所有的函数都处于同一名称空间,也就是没有名称空间,因此就会很多程序提供的api接口函数都有一个前缀,例如MYSQL的mysql_init(),
mysql_real_connect(),
mysql_real_query()等函数名称前面的mysql_。
给你找的资料。
希望对你有所帮助。。
❸ C语言和Java,这两个有什么区别呢
这个C语言是面向过程语言,C++是混合型语言,java是面向对象语言。很多书中吧C++作为面向对象语言来讲,但是实际上C++不是纯种的面向对象语言。java是面向对象的代表。如果你听说过C#的话,那么C#是面向对象的终结。
当然这些对于初学者来说不太明了什么是面向对象、什么是面向过程。而我在这里解释也会让你更加懵懂。所以撇开什么是面向对象什么是面向过程,单单介绍他们实际应用区别:
C是一门非常干练的语言,一切采用函数的形式完成,你可以把所有需要的功能采用函数的形式完成,然后在主函数main中调用。学起来容易,几乎用三两天就可以学会。一般用来教学学习算法,数据结构等。同样这也造成了它的应用范围局限在小程序中,只能是针对小规模的东西开发:比如DOS程序,嵌入式开发等。
C++是在C语言的基础上扩展的,所以一般C++会兼容C语言库。C++是因为用C语言开发项目中会遇到很多团队合作问题,导致团队的工作效率下降。在此基础上迫切需要降低软件开发团队成员之间彼此的干扰性,使得每个工程人员的代码竟可能不影响他人。最后C++便应用而生了。C++主要是其中集成了类地概念,可以将所有的东西封装在类中,类中的私有成员不可被别人访问,这样就有效地解决了代码互干扰性。
java是汲取C++的长处而诞生的,这个语言采用完全面向对象的概念,将所有的功能封装在类中,而不像C++部分封装。由于java采用跨平台性,使得更容易被移植,在互联网要求多终端能够互相访问成为可能,这便形成了java平台今日的盛况,在互联网方面几乎无人可敌。
学习难易程度来讲C++非常难,即使有5年工作经验的C++工程师也未必能够熟练应用C++,C语言易掌握,但是应用起来难度不下于C++,因为C语言几乎是对硬件直接写代码,一般来说会使得代码非常庞大,增加了开发人员的工作量。java因为封装了很多功能,所以几乎开发效率相当高
❹ C语言与C++与JAVA的区别是什么
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++程序设计教程》)时,我们需要为它事先定义“拷贝构造函数”、“赋值运算符的重载函数”和“析构函数”;否则编译器将以“按位”的形式自动生成相应的缺省函数。倘若类中含有指针成员或引用成员,那么这三个默认的函数就隐含了错误
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则没有
classA:protectedB,publicC(C++)
classAextendsB(Java)
Java有super关键字,指代父类对象,通常被用于调用父类的构造方法或一般方法
C++则没有super关键字
两者都有this,指代当前对象
Java有package的概念,可以将类组织起来,便于打包和部署,也有利于类的安全。C++没有这个概念,一个类可以被任意类访问
Javaapplet可以被嵌入HTML文档中,然后由Web浏览器下载和执行
JavaAPI有对网络通讯的特别支持
C++则无内置网络功能
C++程序员必须显式地实现动态内存管理,在析构函数中用delete运算符或free()函数释放对象和其他动态分配的数据空间,否则会造成“内存泄露”
而在Java中,垃圾收集是自动的。当对象的最后一个引用变量被释放掉,这个对象就成为垃圾收集器的候选对象了
因此Java不支持析构函数
finalize()方法主要被用来释放先前打开的非内存资源,如文件句柄
Java源代码被编译成字节码(.class文件),字节码是一种只有JVM才能识别的二进制低级代码,它与具体的处理器无关,要由安装在OS之上的JVM解释执行,转换成相应平台的机器码,因此Java是体系结构中立和跨平台的
而C++直接被编译成底层平台的二进制机器码,由CPU执行,是平台相关的
因此,当解释执行时,Java程序速度更慢
Java语言支持多线程,允许并发线程的同步与互斥操作
C++则没有这种内在机制
Javadoc.exe可以将Java程序的内容和结构转换成HTML格式的文档
❺ C语言与JAVA的区别是什么
语法不同;
单文件的编译时间java比C语言快;
C语言可以直接操专作内存,java不能属直接操作;
C语言可以封装动态库,java不行;
C语言的代码不容易跨平台,java的代码容易跨平台;
C语言有指针,java没有指针;
C语言可以直接操作串口,java需要第三方jar包支持;
C语言的线程更加灵活,java的线程都已经封装好了;
C语言做单独功能,可以增加效率,java适用做web应用开发;
unix是C语言编写的,java也是C语言编写的;
JAVA做web开发的时候,已经有很多成型的框架技术,C语言很少,且需要处理底层内容,对应不熟悉计算机原理的开发者难度很大;
JAVA的开源包太多了,C语言也有但是偏少,而且面向某个业务应用领域的框架没java多;
以下省略1万字。。。
C语言结合java语言开发,这样就碉堡了,可以解决很多应用问题
❻ C语言和java相比较,各自的优势是什么
c语言与java的区别与各自的优势:(c是面向过程的,java是面向对象的)
1.语言背景:
C语言是在单机时代应用非常广泛,它融合了高级语言的简单易用和汇编语言的执行效率。而Java是在研究电子消费产品开发平台和互联网应用的基础上实现的,它的许多语言特性也是从c语言那里沿用和发展,并且使面向对象更加自然和完善(如安全性和代码的移动性)。
2.语言跨平台:
C语言不可以跨平台,JAVA 是不怕这一点的,因为Java可以跨平台,在windows 和 unix 等系统上都可以很好的运行。
3.指针管理:
指针是c语言最大的优点,它可以使用户几乎可以访问计算机的所有内存资源和其他部分资源(就是指那里打那里)。同时也是c语言程序最难掌握和调试的问题,并且给系统的安全性和稳定性带来很大的困难。 而java中没有指针的概念,尽管也有数组和对象的引用的概念,但它的管理全部交给系统管理,这样限制了用户的资源的访问,但是也给java系统带来安全性和稳定性。JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全
4.封装
在java中引入了package的概念,使面向对象和面向组件开发更加方便,而在c语言中没有package概念,需要其他方式来实现。Java都能够实现面向对象思想(封装,继乘,多态)。而由于c语言为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c语言的固有缺陷。
5.数据类型及类
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c语言允许将函数和变量定义为全局的。
6.自动内存管理
Java程序中所有的对象都是用new操作符建立在内存堆栈上, Java自动进行无需内存回收操作,不需要程序员进行删除。而c语言中必须由程序贝释放内存资源,增加了程序设计者的负扔。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
7. 字符串:
C语言不支持字符串变量,在c语言程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心!
Java没有函数,作为一个比c语言更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
我觉得这篇文章写的很好,就摘录给你看了,希望可以帮助到楼主
❼ Java和c语言的区别
C语言是底层的语言,
java可以看作是在C上面封装起来的一种语言,就像建一座高楼一样,C语言更像砖块,沙石等这些基础的东西,而java可以看作是砖块和沙石这些东西组合起来的一面可以搬来搬去的墙。
❽ c语言和java的区别是什么
c语言是面向过程语言 现在基本是不用的 学了c以后也要学面向对象的c# java就是面向对象语言 学c 一般适合搞电脑端的开发 java偏向搞机器代码
❾ C语言和JAVA有什么区别
区别来如下:源
1、设计思路不同:C语言是面向过程的语言,执行效率高;Java是面向对象的语言,执行效率比C语言低;
2、通用性不同:C语言不能跨平台;java可以跨平台直接移植,只要有安装Java虚拟机(JVM)就可以了;
3、语法不同:
(1)、基本数据类型不同:
c语言是int short long char float double 还有一些特殊类型 结构体,指针,联合体等,数组,字符串 ;
java 是byte int short long float double char boolean ,而且c语言的基本类型的位数和操作系统和机器相关,而java 是固定的;
(2)、文件组织方式不一样:c语言会把全局变量和方法的声明,放在一个文件里面,叫做头文件,而java 是以类来组织文件的;
4、应用领域不同:C语言主要用于驱动开发、操作系统、内核开发,嵌入式(单片机)、交换机、路由器等网络设备的开发;java主要是企业应用开发,包括服务器端开发、嵌入式领域、大数据技术、网站领域等。