Java八股文总结一

news2024/9/21 5:35:10

Java基础

一、JDKJREJVM之间的关系?

1、JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。

2、JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。

3、JVM:Java虚拟机,运行Java代码。

二、==和equals的区别

1、==对于基本数据类型,比较的就是值,对于引用数据类型,比较的是他们的内存地址是否为同一地址。

2、equals比较的是对象的内容是否相同。

三、说说final 关键字

1. 修饰变量或字段,表示常量(即不能修改)

2. 修饰类:表示此类不能被继承

3. 修饰方法:表示该方法不能被重写

四、java语言有哪些特点

简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释性、高性能、多线程、动态性等。

五、面向对象和面向过程的区别

  1. 抽象级别:面向过程主要关注解决问题的步骤和过程,以函数为基本单位,强调算法和流程控制。而面向对象则更关注问题领域中的实体和对象,强调将问题划分为多个相互关联的对象,并通过对象之间的交互来解决问题。
  2. 数据和行为:面向过程将数据和行为分离,强调数据的处理和操作,而面向对象则将数据和行为封装在一个单元中,即对象,对象包含了自身的状态(数据)和行为(方法)。
  3. 可重用性和扩展性:面向对象具有良好的可重用性和扩展性,通过继承、封装和多态等机制可以更方便地创建和扩展新功能。而面向过程缺乏这样的机制,代码复用和扩展相对较为困难。

六、instanceof关键字的作用

用于测试一个对象是否是指定类型的实例;(object instanceof class) 

七、八大数据类型及封装类

八、java自动装箱与拆箱

自动装箱是 Java 编译器在基本类型和它们对应的包装类之间进行的自动转换。例如,将 int 类型转换为 Integer 类型,将 double 类型转换为 Double 型等等。如果转换以相反的方式进行,则称为拆箱// 包装类和基本数据类型的相互转换

 九、hashCode的作用

hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的。

十、什么是字节码,采用字节码的好处

字节码是Java等编程语言源代码经过编译器编译后生成的一种中间代码格式,它包含了程序的所有信息,但比机器码更抽象,不能直接被计算机硬件执行。相反,字节码需要在Java虚拟机(JVM)或其他类似的虚拟机上执行,由虚拟机将其转换成特定平台的机器码后再执行。

采用字节码的好处:Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可以移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定机器,因此,Java程序无须重新编译便可以在多种不同的计算机上运行。

十一、Object类有哪些常见的方法

详细参考:Object类常见方法_object有哪些方法-CSDN博客

 十二、java创建对象有几种方法

1、使用`new`关键字直接创建对象

2、工厂模式(Factory Pattern)

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

3、单例模式(Singleton Pattern)

单例模式确保一个类仅有一个实例,并提供一个全局访问点。在单例模式中,对象的创建被封装在类内部,客户端通过类的静态方法获取对象实例。

4. 反射(Reflection)

Java反射API允许程序在运行时检查或修改类的行为。使用反射,可以在运行时动态地创建对象。

5. 序列化与反序列化

在Java中,序列化和反序列化是对象持久化的一种方式,它们分别用于将对象的状态保存到一系列字节中(序列化),以及从字节序列中恢复对象(反序列化)。虽然序列化和反序列化本身不是直接“创建”对象的过程,但它们可以用于在需要时重新构造对象的状态。

序列化

序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,这通常是通过实现`java.io.Serializable`接口(或`java.io.Externalizable`接口,但后者需要更复杂的实现)来完成的。对象被序列化后,可以将其写入文件、发送到网络上的另一个进程,或者存储在内存中等待后续使用。

反序列化

反序列化是序列化的逆过程,即将序列化后的字节序列转换回原来的对象。通过反序列化,可以从文件中读取对象、从网络上接收对象,或者在程序的其他部分中重新构造对象。

 详细参考:

java中创建对象地方式有哪几种?(面试高频)_java创建对象的几种方式-CSDN博客

Java 创建对象的几种方式_java创建对象的几种方式-CSDN博客

十三、获取类class对象的方式有哪些

详细参考:三种获取Class的对象的方法_获取class对象的三种方式-CSDN博客

十四、什么是泛型,泛型有什么作用

详细参考:什么叫泛型?有什么作用?-CSDN博客

十五、重载和重写的区别 

十六、StringStringBufferStringBuilder的区别

1、String的内容不可修改,StringBufferStringBuilder的内容可以修改.

2、StringBufferStringBuilder大部分功能是相似的

3、StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。

十七、String安全吗

安全,(1)String是一种不可变对象,String类被final修饰(被final修饰意味着不能被继承,有助于确保String类的稳定性和安全性)(2)String类中的字符实际保存在内部维护的value字符数组中,value被修饰被final修饰,表明value自身的值不能改变,即不能引用其它字符数组,但是其引用空间中的内容可以修改。

尽量避免对String的直接修改,如果要修改建议尽量使用StringBuffer或者StringBuilder

StringStringBuilder最大的区别在于String的内容无法修改,而StringBuilder的内容可以修改。

 十八、深拷贝与浅拷贝区别了解吗

 

十九、抽象类和接口的区别

 核心区别: 抽象类中可以包含普通方法和普通字段, 这样的普通方法和字段可以被子类直接使用(不必重写), 而接口中不能包含普通方法, 子类必须重写所有的抽象方法。

详细参考:

抽象类和接口的区别(最详细)_抽象类与接口的区别-CSDN博客

接口和抽象类的区别-CSDN博客

补充:

抽象类和接口

一、抽象类特性:六点

  1. 抽象类不能直接实例化对象
  2. 抽象方法不能是 private 的
  3. 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
  4. 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰
  5. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
  6. 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

二、接口

  1. 在java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
  2. 接口不能直接使用,必须有一个“实现类”实现该接口,实现接口中的所有的抽象方法。

三、接口特性:八点

  1. 接口类型是一种引用类型,但是不能直接new接口的对象
  2. 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)
  3. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现
  4. 重写接口中方法时,不能使用默认的访问权限
  5. 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量
  6. 接口中不能有静态代码块和构造方法
  7. 接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class
  8. 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类
  9. jdk8中:接口中还可以包含default方法。

四、一个类只能继承一个类(只有一个父类),但可以实现多个接口,当一个类实现多个接口时,每个接口中的抽象方法都要实现,否则该类必须设置为抽象类。接口可以多继承接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2098949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蔡司小乐圆镜片:自由环面与微柱镜排布助力兼顾舒适与效果

从学习到休闲娱乐,孩子们的日常生活已与电子设备密不可分,视力面临日益严峻的挑战。为了让孩子拥有全视野清晰视觉体验的同时,更有效管理孩子的近视发展,让孩子佩戴蔡司小乐圆镜片,也成为不少家长的首选。 数据统计&am…

opencv图像形态学(边缘检测算法实例)

引言 图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。在OpenCV中,图像形态学操作通过一系列的数学运算来实现,如腐蚀、膨胀、开运算、闭运算等。这些操作在图像处理、计算机视觉和模式识别等领域有着…

Python自动化必会技能-Excel文件读取

01 重点 在自动化测试过程中,经常需要使用excel文件来存储测试用例,那么在表格内设计好了测试用例数据后,如何通过自动化读取呢?此时就需要测试小姐姐动手写“代码”了~ 本文主要介绍通过python来读取表格数据。Python读取表格的…

C语言的函数递归

目录 前言 一、递归是什么? 1. 递归的思想 2. 递归的限制条件 二、递归举例 1. 求n的阶乘 1.1 思路分析 1.2 画图推演 2. 顺序打印⼀个整数的每⼀位 2.1 思路分析 2.2 画图推演 三、递归与迭代 四、求第n个斐波那契数 总结 前言 我们在函数上已经非常…

《父母爱情》:找结婚对象,别只看有房有车有颜,这4个特点更重要!

点击上方△腾阳 关注 转载请联系授权 你好,我是腾阳。 最近,我重温了电视剧《父母爱情》,不禁被剧中人物的情感纠葛和生活琐事深深吸引。 在当今社会,许多人在选择结婚对象时,往往只关注房子、车子、颜值&#xff0…

2020年B题高穿越沙漠教社杯全国大学生数学建模竞赛题目与分析

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ​ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓…

DHECDH密钥交互算法

1. 引言 在现代通信中,数据的安全性至关重要。无论是网络浏览、电子邮件,还是移动支付,保护数据不被窃听和篡改都是首要任务。密钥交换是保障通信安全的关键技术之一,其中最著名的两个算法是 Diffie-Hellman (DH) 和 椭圆曲线 Di…

用Python实现时间序列模型实战——Day 8: 季节性ARIMA模型 (SARIMA)

一、学习内容 1. SARIMA 模型的定义与公式推导 SARIMA 模型: SARIMA 模型是扩展了 ARIMA 模型的一种方法,全称为季节性自回归积分滑动平均模型(Seasonal AutoRegressive Integrated Moving Average)。它结合了 ARIMA 模型的非季…

和字符串有关的经典OJ题——字符串的逆置和字符串的翻转

学习完字符串有关的函数之后,那当然在这个章节有两道经典的子题也要给大家分享一下。 分别是字符串的逆置和字符串的翻转。 一、字符串的逆置: 1. 问题描述: 问题很容易理解:对于用户任意给定的字符串,就比如说是原…

MFC自定义消息实例

1、新建一个SHOW名称的对话框文件 2、在SHOWDlg.h中添加代码 #define WM_Display (WM_USER100)afx_msg LRESULT OnDisplay(WPARAM wParam, LPARAM lParam);3、在SHOWDlg.cpp中添加代码 BEGIN_MESSAGE_MAP(CSHOWDlg, CDialog)...ON_MESSAGE(WM_Display, OnDisplay) END_MESSA…

全面解读 HTTP 缓存机制:200 内存与硬盘缓存、304 状态码

更多内容:孔乙己大叔 在探讨网页性能优化时,HTTP 缓存机制是不可或缺的一环。它不仅能够减少数据传输量,降低带宽消耗,还能显著提升网页的加载速度和用户体验。本文将深入解析 HTTP 状态码 200 和 304 在缓存机制中的作用&#xf…

不懂就问,净水器到底过滤了什么?

在水质问题日益受到关注的今天,净水器已成为许多家庭的必备品。然而,对于净水器究竟能够过滤掉多少脏东西,很多人可能并不十分清楚。 净水器的核心功能是去除水中的杂质和有害物质,确保我们饮用的水更加安全和健康。这就如同我们…

【kafka】在Linux系统中部署配置Kafka的详细用法教程分享

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

零工市场 Java 版源码开发:开启灵活就业新潮流

现如今,数字化经济发展的越来越迅速,那么灵活就业的方式也就更加受到大众的青睐。其中,零工市场的兴起为求职者和招聘方提供了更加便捷、高效的对接平台。 系统概述 零工市场系统是一个连接求职者和招聘方的在线平台,主要功能包…

Carmeker C接口

本文主要是简单介绍如何将C代码的模型嵌入到carmaker中运行 一.项目创建与例程生成 在创建项目的时候勾选source选项,勾选后才能在项目目录下生成src的文件夹 在src文件夹下,存在大量IPG的例程,这些例程简单介绍了如何使用了src的接口 编译…

递归 与 dfs 综合练习(四)

目录 一、单词搜索 1.题目链接:79. 单词搜索 2.题目描述: 3.解法 🌴算法思路: 🌴算法代码: 一、黄金矿工 1.题目链接:1219. 黄金矿工 2.题目描述: 3.解法 🌴算…

《从C/C++到Java入门指南》- 25.final 关键字

final 关键字 final 变量 final变量可以理解为C中的const,变量一经定义无法修改。 public class Main {public static void main(String args[]) {final double PI 3.1415926;System.out.println(PI);// PI 3.14; // 尝试修改会报错} }final 方法 一个定义为f…

私有仓库

创建私有仓库,在企业中分享项⽬ # 创建仓库 # 重启docker服务 # 为要上传的镜像添加标记 1.拉取registry 2.创建挂载⽬录 3.启动容器,映射端⼝,挂载⽬录 4.访问仓库 5.配置pull和push,修改daemon.json 6.修改了配置⽂件,重启docke…

WordPress资源产品展示类主题 官网主题 CeoNova-Pro_v4.4

WordPress资源产品展示类主题 官网主题 CeoNova-Pro_v4.4 开心版 CeoNova-Pro主题是一款轻量级、且简洁大气、产品官网类主题,定位于高端产品官网、同时包含了知识付费、定制服务、问答社区、论坛交流、网址导航、以及付费产品购买下载等全方位覆盖。 CeoNova主题…

C#和数据类型转换

C#是一种强类型语言,这意味着每个变量的类型在编译时都是已知的。数据类型转换是指将一种数据类型的值转换为另一种数据类型的过程。在C#中,数据类型转换分为隐式转换和显式转换。本文将详细探讨这两种转换方式,并提供字符转16进制的解决方案…