java语言和c语言一样是面向对象的程序设计语言_面向对象和面向过程具体区别

java语言和c语言一样是面向对象的程序设计语言_面向对象和面向过程具体区别很多初学编程的小伙伴或者想要学习编程的小白弄不清C语言和Java的区别。本文就针对萌新们尽量用通俗的语言来介绍一下我所理解的编程语言界的两大巨头。为什么说是两巨头,介绍之前我们先看一下某度搜索出来的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  很多初学编程的小伙伴或者想要学习编程的小白弄不清C语言和Java的区别。本文就针对萌新们尽量用通俗的语言来介绍一下我所理解的编程语言界的两大巨头。

  为什么说是两巨头,介绍之前我们先看一下某度搜索出来的近几年编程语言排行榜

            2018~2019年编程语言排行榜前二十  

java语言和c语言一样是面向对象的程序设计语言_面向对象和面向过程具体区别

 


 

            2016~2017年编程语言排行榜前二十

java语言和c语言一样是面向对象的程序设计语言_面向对象和面向过程具体区别

当然Python和C++等语言也是稳居前几名,我们今天主要说C和Java。好吧是我对Python和C++了解的太少。下面直接略掉起源发展什么的进入正题,想了解的小伙伴可以在看完本篇文章之后直接去某度搜索C语言或Java:

  一:面向过程(C语言)和面向对象(Java):(吃狗屎和狗吃屎)

  简单来说面向过程就是给要解决的问题分成几个步骤然后从第一步开始干就完了!它侧重于解决问题的过程,举个不太恰当的例子就是吃狗屎。

而相对于面向过程而言,面向对象是一种思维方式。面向对象就是把构成问题的事务分解成很多个对象,建立对象的任务不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

 

   我知道你可能已经晕了。现在你可以简单的理解为相对于面向过程的吃狗屎来举例子,面向对象就是狗吃屎。狗就是一个对象,吃屎的方法就是对象的一个行为。有一句话叫万物皆对象,就是说在面向对象中,任何东西都是对象。对象又包含了属性和方法,再举一个例子:前段时间网上挺火的奥里给那谁,把他看作一个对象(注意此对象不是你女朋友那个对象的对象),他的名字、身高、体重、发型等特征就是属性,那个干就完了,奥里给!就是一个方法;总结起来就是对象包含属性和方法。他除了可以奥里给这个行为能不能干别的,当然能。

  面向过程中的吃狗屎他就是一个过程,而面向对象的狗吃屎就是对象调用方法,当然除了调用吃屎的方法还可以调用别的方法,给他放在门口还能看家。对于萌新关于面向对象可以先了解到这里,或者你已经感觉晕晕乎乎的,没关系,等到后面的学习和积累了解会更加深入更加清晰。关于面向对象和面向过程网上有一个写的很好的例子来分享给大家

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。
蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。
蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。
到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

   

  二:跨平台

  我认为直接说C语言不能跨平台或者说C语言能跨平台都是不太合适的;C语言的跨平台是源码级的跨平台,什么意思呢?就是说你用C语言写的代码如果是在windows操作系统下编译出来的可执行程序,这个可执行程序不仅可以在你的windows电脑上运行,拿到别人的电脑上,只要是windows操作系统也可以运行;拿着你用C语言写的代码放到linux操作系统上编译出可执行程序,那这个可执行程序在别人的linux操作系统上也可以运行。总结起来说就是:一次编写,到处编译。在这方面Java就比较牛逼了。Java是跨平台的,你写好的Java代码在你的电脑上编译之后,不管是放到windows操作系统上,还是unix或者linux操作系统上都可以运行,只要系统上有Java虚拟机(JVM)都可以运行,总结起来就是:一次编译,到处运行

  三:效率

  说到执行效率由于没有写C语言与Java的起源及发展历程,这里顺带提一句Java语言是在C语言的基础上开发出来的,Java的很多底层源码都是C语言实现的。这一句话现在搞不懂没关系,只需要知道C语言可以看作是Java的老祖宗。C语言有一个很强大的东西叫指针,当然也是一个难点。指针是直接和计算机内存打交道的东西,这使得C语言的执行效率很高,通过指针你几乎可以访问操作计算机的所有内存资源,当然如果使用不当是很危险的。那Java没有指针吗?也不能这么说,Java有一个东西叫虚拟机(JVM)它就像一个中介一样,Java代码都需要交给它,然后它来和计算机的内存打交道,这当然使得Java的效率没有C语言高,那Java的指针在哪儿呢?虚拟机的内部最终还是使用的指针,也就是说在Java中使用指针这个过程Java虚拟机帮你实现了,它可以防止一些非法操作,虽然降低了效率但是有利于程序的安全。

  四:应用领域

  C语言主要用于操作系统、内核开发,嵌入式(单片机)、交换机、路由器等网络设备的开发;java主要是企业应用开发,包括服务器端开发、大数据技术、网站领域等。

 

  当然C语言和Java还有很多异同;像数据类型、内存管理什么的,这些在后续学到了自然就了解了。可能有很多小伙伴会纠结编程入门是先学C语言好还是先学Java好。首先语言没有好坏之分,其次C语言和Java的基础知识有很多相似甚至可以说本质一样,不管先学哪一个基础知识掌握的差不多了再学另一个会比较简单。可以根据自己学校的课程安排或者随大流先学习C语言,毕竟C语言更加底层。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167810.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 机器学习网格搜索寻找最优参数[通俗易懂]

    机器学习网格搜索寻找最优参数[通俗易懂]整理一下前阶段复习的关于网格搜索的知识:程序及数据请到github上下载GridSearch练习网格搜索是将训练集训练的一堆模型中,选取超参数的所有值(或者代表性的几个值),将这些选取的参数及值全部列出一个表格,并分别将其进行模拟,选出最优模型。上面是数据集的可视化分布图,具体代码如下:%matplotlibinlineimportpandasaspdimpo…

  • java按字节、字符、行、随机读取文件,并设置字符编码格式

    java按字节、字符、行、随机读取文件,并设置字符编码格式

  • 【LDC1314】电感传感器中文手册与检测原理介绍

    【LDC1314】电感传感器中文手册与检测原理介绍关键词:LDC1314,电感传感器,金属传感器,中文手册【声明:本博文参考TI官方手册翻译而成,旨在帮助大家快速了解这款芯片,如翻译有误欢迎评论指出,转载需注明来源!】以下是我对TI官方手册的人肉翻译,截取了其中的关键部分,有助于大家更好的撸底层驱动和排查硬件问题。相关博客:【LDC1314】金属传感器(电感传感器)的调试技巧首先,是引脚位的定义与说明:引脚 引脚类型…

  • oracle数据库的sql语句练习1

    oracle数据库的sql语句练习//1. 查询员工表所有数据select*fromemployees//2. 打印公司里所有的manager_idselectmanager_idfromemployees//3. 查询所员工的email全名,公司email统一以”@zpark.cn”结尾selectemail||‘@zpark.cn’asemailf…

  • MQTT服务器搭建与试用,桌面工具连接MQTT服务器

    MQTT服务器搭建与试用,桌面工具连接MQTT服务器简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。MQTT现在主要用于即时通讯,物联网M2M,物联网采集等。本文就社区上常见的开源MQTT服务器在常见操作系统上的搭建做详细介绍。目前一些开源MQTT服…

  • 代码做网页_网页制作个人简历模板

    代码做网页_网页制作个人简历模板##作者简介作者名:1_bit简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。系列教程将会在流量降低时转为付费位置,流量多时将不会,各位抓紧时间学习哟~

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号