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注入、接口注入
  • 目的:帮助我们接耦各种有依赖关系的业务对象之间的绑定关系
相关推荐
真实的菜5 分钟前
消息队列处理模式:流式与批处理的艺术
java
Bruce_Liuxiaowei6 分钟前
PHP文件包含漏洞详解:原理、利用与防御
开发语言·网络安全·php·文件包含
泽020215 分钟前
C++之STL--list
开发语言·c++·list
YGGP19 分钟前
吃透 Golang 基础:数据结构之 Map
开发语言·数据结构·golang
盖世英雄酱5813620 分钟前
Java 内存管理技巧(新手必看集合篇)
java
~plus~21 分钟前
Harmony核心:动态方法修补与.NET游戏Mod开发
开发语言·jvm·经验分享·后端·程序人生·c#
码农小灰22 分钟前
Java 8 Stream API 入门到实践详解
java·java案例
步、步、为营27 分钟前
.NET 事件模式举例介绍
java·开发语言·.net
cui_hao_nan30 分钟前
设计模式——模板方法
java·设计模式
~plus~30 分钟前
WPF八大法则:告别模态窗口卡顿
开发语言·经验分享·后端·程序人生·c#