大家好,又见面了,我是你们的朋友全栈君。
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学习笔记整理
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156726.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...