当前位置: 首页 > article >正文

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注入、接口注入
  • 目的:帮助我们接耦各种有依赖关系的业务对象之间的绑定关系

http://www.kler.cn/a/413248.html

相关文章:

  • 数据结构 ——— 归并排序算法的实现
  • Web登录页面设计
  • 多输入多输出 | Matlab实现TCN-GRU时间卷积神经网络结合门控循环单元多输入多输出预测
  • Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别
  • Leetcode 面试150题 88.合并两个有序数组 简单
  • 计算机操作系统——进程控制(Linux)
  • 问:Spring JavaConfig怎么用?
  • mybatis-plus 实现分页查询步骤
  • 【设计模式】创建型模式之装饰器模式(组成、步骤、优缺点、场景)
  • 群聊前选择患者功能的实现
  • Vue集成Excalidraw实现在线画板功能
  • ELK配置索引清理策略
  • ts 非空断言
  • 跨平台应用开发框架(2)----Qt(窗口篇)
  • Linux 下自动化之路:达梦数据库定期备份并推送至 GitLab 全攻略
  • 开箱即用!合合信息的智能文档处理“百宝箱”
  • 华三堆叠配置实验
  • Java对象集合使用Java 8的Stream API合并数据
  • 华为云国内版与国际版的差异
  • ML 系列:第 31 节— 机器学习中的协方差和相关性
  • 01-go入门
  • 游戏引擎学习第21天
  • 设计模式:12、中介者模式
  • 跨域问题?同源策略大全
  • 代码随想录算法训练营第十一天(LeetCode150.逆波兰表达式求值;LeetCode239.滑动窗口最大值;LeetCode347.前K个高频元素)
  • 欢迪迈手机商城:基于SpringBoot的多平台支持