zoukankan      html  css  js  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_。

    4、在运行方式上 C:原始的C是面向过程的.就是按行执行. JAVA:绝对的面向对象.就像按模块执行. (补充:当然,在C++,及C#上,C也有向面向对象模式转换)

    5、在语句结构上 C:在中国应该算是编程语言的颠峰应用.C就像个完全服从的军人.你让他做什么他就做什么.你完全控制他,但你必须全程了解他之后才能控制好他.

    C里面特有指针,地址等.以及数组存储方式与JAVA不一样.

    JAVA:人性化的面向对象编程语言.他把万物都可以看成一个基本的对象,然后再复制,改写他们. JAVA给认为有点像工厂,你在工厂里面先分别做好一个个小零件,然后再用电线把他们连起来.组装成可用的东西.

    6、用途上 C:纯C一般用在嵌入式上.编写最底层的程序.因为他的语言与硬件的连接最容易. C++:应用软件,WEB程序都可以. JAVA:J2EE,J2SM,J2ME.什么都可以

    c 嵌入式底层软件 操作系统 各类函数库引擎库软件核心代码 服务器端底层工具 c++ 图形图像 游戏客户端 游戏服务端桌面软件各类高性能客户端软件近底层软件 java嵌入式移动设备应用软件开发 web网页后台逻辑开发部分桌面程序 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多;
     

    JAVA和C还有一个最大的区别,那就是跨平台。

       通过JAVA虚拟机的解析,可以使在Windows或UNIX上面写的程序在其他系统下也能运行,而C语言是绝对不行的。但是C语言在和硬件打交道的时候,速度是最快的。C比较基础,java比较流行。但是2者没有上下之分,一个是编程语言的鼻祖,一个是目前流行的跨平台语言.擅长的领域不同,在不同的场合用不同的语言。但是,如何运用好这门语言,也就是对程序员的一个考验。鱼和熊掌的问题,取舍最终还是只能看你自己。

     

    C、C++、C#其实也是三种不同的语言

    C++是C的增强版,增加了一些新的特性,如面向对象 C#跟 C/C++ 完全不同,是微软开发的语言,用于.net

    只是语法有点像C/C++  要说区别,首先就得说联系, C是爷爷,C++是爸爸, C#是c的外孙。这形象说明了三者的关系。

    从时间先后上说,他们之间最早出现的是C,然后是c++,最后是c#。c++是为了解决软件危机而引入面向对象

    c#为了实现平台统一和java争夺市场下的产物。

    目前软件开发有两种主流的开发方法(对应的语言):

    1、结构化开发方法:C、Basic、Pascal;

    2、面向对象开发方法:C++、Java、C#、Ruby

     

    一、 Java封装了很多类和接口,而这些是C语言没有的。其实为了提高开发效率,java就应运而生了,这些功能在C语言也可以实现,但是要自己写更多的代码。但也因此,同样的程序用java写的一般跑得比C语言 的慢很多。

    二、 C语言是面向过程的语言,而Java是面向对象的语言。Java相对于c语言而言,去掉了指针等容易出错的功能。在Java语言白皮书中,Java被描述为“是一种简单、面向对象、分布式、解释、健壮、安全、结构中立、可移植、高效能、多线程、动态的语言

    三、 C语言单机代应用非广泛融合高级语言简单易用汇编语言执行效率Java研究电消费产品发平台互联网应用基础实现许的语言特性c语言沿用发展并且使面向象更加自完善(安全性代码移性)。

    四、 Java的程序是由一个一个类组成的,一个Java应用程序至少包含一个类,极端的,一个类可以是一个空类,不包含任何属性定义和方法声明。

    五、 至少一个类中应该包含public static void main(String[] args)这样的方法声明,否则程序不可能被运行。

    六、 Java跨平台,既不同的操作系统都可以通过JVM(java虚拟机)来解释Java程序,而则是与平台相关的,有些指令只在某些操作系统中才能执行。Java是解释型语言,所有代码都会翻译成统一的、与系统无关的bytecode,然后放到JVM上运行;而C是编译式语言,代码要先通过编译器转换成与系统相关的中间代码,然后才能运行。

    七、 Public表示该类可被其它的类访问,class表示Java的一个类,static表示main()方法是一个可以直接使用的方法,void表明main()方法执行它所包含的语句后不返回给调用者任何信息。这一点是重要的,因为Java编程语言要进行谨慎的类型检查,包括检查的调用方法确实返回了这些方法所声明的返回值类型。String[]是一个string数组的声明,用来接受外界传递给main()方法的参数。

    八、 Java程序多用于网络。C语言的安全性不如Java,C语言没有Java的垃圾回收机制,申请的空间要手动释放。Java的通用性好,可以跨平台直接移植,只要有安装Java虚拟机(JVM)就可以了。在速度上,C语言编写的程序要优于Java,因为Java必须运行在虚拟机的环境中,但是因为虚拟机,Java获得的平台无关性,而C语言的程序有可能需要重新修改编译才能实现平台的移植,另一方面,C语言比Java语言更“底层”,因此可以用C编写例如硬件的驱动,而Java却不行。

    九、 Java的命名规则是标识符可从一个字母、下划线(—)或美元符号($)开始,随后可跟除了在Java中作为运算符之外的任何可见字符。标识符是连续的字符串,不能被制表符和空格隔开。标识符不可能是关键字,但是它可包含一个关键字作为它的名字的一部分。Java语言严格区分标识符的大小写,未规定最大长度。

    十、 基本Java类型有八种,分别为逻辑型、字符型、字节型、短整型、整型、长整型、单精度、双精度。

    十一、 Scanner是一个类,通过调用扫描对象的方法实现输入。Println()方法,ln表示换行。

          

  • 相关阅读:
    hyper虚拟机下对centos进行动态扩容
    《C#高级编程第七版》多线程之Events
    借鉴StanZhai核心代码,写了个博客园采集器
    文档转换之PDF转换为HTML
    书香电子书下载地址分析器
    c#常用类库及资源
    iis7.5 配置伪静态
    根据枚举类型获取描述
    从客户端检测到有潜在危险的Request.Form值
    Sql行列转换
  • 原文地址:https://www.cnblogs.com/Archmage/p/7569344.html
Copyright © 2011-2022 走看看