Java八股(一)

目录

1.JVM、JRE、JDK之间的关系

2.static关键字作用(通俗版)

3.面向对象、面向过程

4.私有方法

5.Java代码执行与编译

6.IOC


1.JVM、JRE、JDK之间的关系

Java一次编写到处运行,可移植性好,保证这一点的就是iava虚拟机JVM

JRE是运行环境,不能创建新程序。他是包括JVM的

JDK是功能最齐全的,包括编译器和各种工具,我们写代码就需要这个了

2.static关键字作用(通俗版)

这就要提到new对象,只有new对象之后,数据存储空间才会被分配,方法或变量才能供外界调用。但是当没有创建对象的时候也想要调用方法或者就是想为特定分配存储空间的时候,就需要用static。所以有了static,成员变量或者方法就可以在没有所属对象的时候被访问了。

3.面向对象、面向过程

面向过程的性能比较高,因为没有实例化等操作,开销比较小。面向对象因为有了封装继承多态的特性,可以设计出低耦合的系统,使得系统更灵活、容易维护。

封装是指封装成抽象的类,并且对于可信的类或者对象,是可以操作的,对于不可信的进行隐藏。

继承是指可以使用现有类的所有功能,而且还可以在现有功能的基础上做拓展。

多态是基于继承的,他是指父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或者表现出不同的行为,使得同一个属性在父类及其子类中具有不同的含义。重载就是多态的一个例子,是编译时的多态。其实我们所说的多态是运行时多态,也就是说编译的时候不确定调用哪个具体方法,一直延迟到运行时才可以确定,所以多态又叫延迟方法。

  • 重载和重写都是实现多态的方式,区别在于:重载是编译时多态,重写是运行时多态

4.私有方法

只要方法是私有的,类设计者就可以确信它不会在别处使用,所以可以删去,而如果是公共的,那么可能会因为其他其他代码依赖这个方法。

5.Java代码执行与编译

首先我们需要明确的是,大部分程序代码在转换为物理机器能理解的指令集之前,会经过以下步骤:

其中,橙色部分由javac编译器完成,生成线性的字节码指令。通过javac 编译器,我们可以很方便地将 java 源文件编译成字节码文件。这个过程和JVM无关,因为对于Java 虚拟机来说,其实际输入的是字节码文件,而不是Java 文件。接下来,当JVM启动时会根据预定义的规范对字节码进行逐行解释的方式执行,将字节码文件中的内容"翻译"为操作系统能理解的指令。

为什么需要字节码作为中介,不直接将源代码编译为机器能识别的机器指令呢?

这是因为]ava设计者的初衷是为了实现跨平台,因此避免采用类似C、C++那种静态编译的方式直接生成机器指令,从而诞生了通过编译器在运行时逐行解释字节码指令从而执行程序的想法。所以,解释器真正意义上所承担的角色就是一个运行时"翻译者",将字节码文件中的内容"翻译"为对应平台的本地机器指令执行。

6.IOC

  • 概念:控制反转,意思就是将创建对象的控制权从自己硬编码new的一个对象反转到了第三方身上
  • 主要实现方式:依赖注入,Spring中的依赖注入方式有:构造方法注入、setter注入、接口注入
  • 目的:帮助我们接耦各种有依赖关系的业务对象之间的绑定关系
相关推荐
chushiyunen3 分钟前
dom操作笔记、xml和document等
xml·java·笔记
whisperrr.3 分钟前
【spring01】Spring 管理 Bean-IOC,基于 XML 配置 bean
xml·java·spring
chushiyunen6 分钟前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat
天上掉下来个程小白12 分钟前
HttpClient-03.入门案例-发送POST方式请求
java·spring·httpclient·苍穹外卖
ModestCoder_22 分钟前
将一个新的机器人模型导入最新版isaacLab进行训练(以unitree H1_2为例)
android·java·机器人
a1800793108043 分钟前
软件工程面试题(二十二)
java·面试·软件工程
RainbowSea1 小时前
4. RabbitMQ 发布确认的配置详细说明
java·消息队列·rabbitmq
车载小杜1 小时前
基于指针的线程池
开发语言·c++
robin_suli1 小时前
Spring事务的传播机制
android·java·spring
青云交1 小时前
Java 大视界 -- Java 大数据在智能电网电力市场交易数据分析与策略制定中的关键作用(162)
java·大数据·数据分析·交易策略·智能电网·java 大数据·电力市场交易