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注入、接口注入
  • 目的:帮助我们接耦各种有依赖关系的业务对象之间的绑定关系
相关推荐
猷咪8 分钟前
C++基础
开发语言·c++
IT·小灰灰10 分钟前
30行PHP,利用硅基流动API,网页客服瞬间上线
开发语言·人工智能·aigc·php
快点好好学习吧11 分钟前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
秦老师Q12 分钟前
php入门教程(超详细,一篇就够了!!!)
开发语言·mysql·php·db
烟锁池塘柳012 分钟前
解决Google Scholar “We‘re sorry... but your computer or network may be sending automated queries.”的问题
开发语言
是誰萆微了承諾12 分钟前
php 对接deepseek
android·开发语言·php
vx_BS8133016 分钟前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_9498683616 分钟前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
星火开发设计30 分钟前
类型别名 typedef:让复杂类型更简洁
开发语言·c++·学习·算法·函数·知识
qq_1777673742 分钟前
React Native鸿蒙跨平台数据使用监控应用技术,通过setInterval每5秒更新一次数据使用情况和套餐使用情况,模拟了真实应用中的数据监控场景
开发语言·前端·javascript·react native·react.js·ecmascript·harmonyos