Java葵花宝典(一)

Java葵花宝典(一)1.面向对象和面向过程的区别面向过程:是以事件为中心,按照我们编写的代码,根据完成步骤的过程来执行的优点:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要考量的因素的时候,比如单片机开发,嵌入式开发,Linux一般采用面向过程开发缺点:没有面向对象易维护、易复用、易扩展面向对象:将事物高度抽象化,我们把要完成的功能高度抽象成一个个对象,调用对象的方法或者属性来完成所需功能优点:易维护、易复用、易扩展。因为面向对象有封装、继承、多态的特性,所以可以设计

大家好,又见面了,我是你们的朋友全栈君。

1.面向对象和面向过程的区别

面向过程:是以事件为中心,按照我们编写的代码,根据完成步骤的过程来执行的

优点:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要考量的因素的时候,比如单片机开发,嵌入式开发,Linux一般采用面向过程开发
缺点:没有面向对象易维护、易复用、易扩展

面向对象:将事物高度抽象化,我们把要完成的功能高度抽象成一个个对象,调用对象的方法或者属性来完成所需功能

优点:易维护、易复用、易扩展 。因为面向对象有封装、继承、多态的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:面向对象的性能没有面向过程高

2.JVM JDK和JRE通俗解答

JVM:JVM(虚拟机)是运行Java字节码的虚拟机,JVM有争对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会出现相同的结果。
什么是字节码?采用字节码的好处是什么?
Java中字节码就是JVM可以理解的代码(即扩展名是.class)的文件,他不面向任何特定的处理器,只面向虚拟机。Java语言采用虚拟机在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释性语言可以移植的特点。因此Java程序运行时比较高效,而且字节码运行时并不针对一种特定的机器,所以Java程序不需要重新编译便可以在不同操作系统的计算机上运行。

Java程序从源代码到运行一般有3步
在这里插入图片描述
我们需要格外注意.class——>机器码这一步。在这一步JVM类加载器首次加载字节码文件,然后通过解释器逐行解释执行,这种执行方式速度相对来说较慢,而且有些方法和代码块会被重复调用,所以后面引进了JIT编译器,而JIT属于运行时编译。当JIT完成第一次编译后,会将字节码对应的机器码保存下来,下次可以直接使用。而且我们知道,机器码的运行效率肯定是高于Java编译器的,这也就是我们为什么会说Java是编译与解释共存的语言。

总结: Java虚拟机(JVM)是运行Java字节码的虚拟机,虚拟机有针对不同操作用户的实现,目的是当使用相同字节码时,他们都会出现相同的结果。字节码和不同系统的JVM实现是Java语言的一次编译,随处可以运行的关键所在。

JDK和JRE

JDK全称(Java Development Kit),它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb),它可以创建和编译程序。

JRE是Java运行时的环境,它运行已编译Java程序所需要的全部内容集合,包括Java虚拟机,Java类库,Java命令和其他基础构件。但是它不能用于创建新程序。

如果你只是为了运行一下Java程序的话,那么你只需要安装JRE就可以了。如果你需要从事Java编程方面的工作,你就需要安装JDK了。但是呢,这也不是绝对的,有时候,即使您不但算在计算机上进行任何Java开发,仍然需要安装JDK。例如:如果您使用Jsp部署Web应用程序,那么从技术上讲,您只是在应用程序服务器上运行Java程序,那您为什么需要JDK呢?因为应用程序服务器会讲Jsp转换成Java Servlet,并且需要使用JDK来编译servlet。

3.Java和C++的区别

都是面向对象语言,都支持封装、继承、多态
Java不提供指针来直接访问内存,程序内存使用更加安全
Java的类是单继承的,C++支持多重继承,虽然Java的类不支持多重继承,但是Java的接口支持多重继承
Java有自动内存管理机制,不需要程序员手动释放无用内存
在C语言中,字符串和字符数组最后都会有一个额外字符’\0’来表示结束,但是Java中没有结束字符这一概念
备注:葵花宝典系列为Java学习笔记整理

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156726.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytorch加载自己的数据集(使用DataLoader读取Dataset)[通俗易懂]

    Pytorch加载自己的数据集(使用DataLoader读取Dataset)[通俗易懂]1.我们经常可以看到Pytorch加载数据集会用到官方整理好的数据集。很多时候我们需要加载自己的数据集,这时候我们需要使用Dataset和DataLoaderDataset:是被封装进DataLoader里,实现该方法封装自己的数据和标签。DataLoader:被封装入DataLoaderIter里,实现该方法达到数据的划分。2.Dataset阅读源码后,我们可以指导,继承该方法必须…

    2022年5月2日
  • Python读取excel文件数据并插入数据库[通俗易懂]

    Python读取excel文件数据并插入数据库[通俗易懂]目的:将excel文件StudentInfo.xls的学生信息插入到test库中的student表中一、连接mysql数据库安装第三方库pymysql:pipinstallpymysql调用pymysql.connect()方法连接数据库,代码如下importpymysql#打开数据库连接conn=pymysql.connect(host=’localhost’,#MySQL服务器地址user=’root’,#MySQL服务器端口号p

    2022年9月1日
  • 双机流水作业调度问题——Johnson算法「建议收藏」

    双机流水作业调度问题——Johnson算法「建议收藏」概述流水作业是并行处理技术领域的一项关键技术,它是以专业化为基础,将不同处理对象的同一施工工序交给专业处理部件执行,各处理部件在统一计划安排下,依次在各个作业面上完成指定的操作。流水作业调度问题是一个非常重要的问题,其直接关系到计算机处理器的工作效率。然而由于牵扯到数据相关、资源相关、控制相关等许多问题,最优流水作业调度问题处理起来非常复杂。已经证明,当机器数(或称工序数)大于等于3时,流水作业调度问题是一个NP-hard问题(e.g分布式任务调度)。粗糙地说,即该问题至少在目前基本上没有可能找到多项

    2022年11月1日
  • win7 64位wamp2.5无法启动MSVCR110.DLL丢失听语音

    win7 64位wamp2.5无法启动MSVCR110.DLL丢失听语音

    2021年9月23日
  • spring cloud eurake server「建议收藏」

    spring cloud eurake server「建议收藏」1、概念:待补充2、入门2.1、启动eurekaserver此处示例是maven-module搭建,第一段为maven项目的dependency,后面的为module-springcloud-server的示例dependency<parent><groupId>org.springframewo…

    2022年6月5日
  • 【论文精读】Parallax-Tolerant Image Stitching Based on Robust Elastic Warping

    【论文精读】Parallax-Tolerant Image Stitching Based on Robust Elastic Warping基于高鲁棒性的弹性扭曲视差容忍图像拼接算法

    2022年11月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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