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

Java高频必背面试题基础篇02

一、Java 语⾔中关键字 static 的作⽤是什么?

static 的主要作⽤有两个:
(1)为某种特定数据类型或对象分配与创建对象个数⽆关的单⼀的存储空间。
(2)使得某个⽅法或属性与类⽽不是对象关联在⼀起,即在不创建对象的情况下可通过类直接调⽤⽅法或使⽤类的属性。
static 具体可分为 4 种使⽤⽅式:
(1)修饰成员变量。⽤ static 关键字修饰的静态变量在内存中只有⼀个副本。只要静态变量所在的类被加载,这个静态变量就会被分配空间,可以使⽤“类.静态变量”和“对象.静态变量”的⽅法使⽤。
(2)修饰成员⽅法。static 修饰的⽅法⽆需创建对象就可以被调⽤。static ⽅法中不能使⽤ this 和 super 关键字,不能调⽤⾮ static ⽅法,只能访问所属类的静态成员变量和静态成员⽅法。
(3)修饰代码块。JVM 在加载类的时候会执⾏ static 代码块。static 代码块常⽤于初始化静态变量。static代码块只会被执⾏⼀次。
(4)修饰内部类。static 内部类可以不依赖外部类实例对象⽽被实例化。静态内部类不能与外部类有相同的名字,不能访问普通成员变量,只能访问外部类中的静态成员和静态成员⽅法。

二、为什么要把 String 设计为不可变?

(1)节省空间:字符串常量存储在 JVM 的字符串池中可以被⽤户共享。
(2)提⾼效率:String 可以被不同线程共享,是线程安全的。在涉及多线程操作中不需要同步操作。
(3)安全:String 常被⽤于⽤户名、密码、⽂件名等使⽤,由于其不可变,可避免⿊客⾏为对其恶意修改。

三、简述 String/StringBuffer 与 StringBuilder。

(1)String 类采⽤利⽤ final 修饰的字符数组进⾏字符串保存,因此不可变。如果对 String 类型对象修改,需要新建对象,将⽼字符和新增加的字符⼀并存进去。
(2)StringBuffer,采⽤⽆ final 修饰的字符数组进⾏保存,可理解为实现线程安全的 StringBuilder。
(3)StringBuilder,采⽤⽆ final 修饰的字符数组进⾏保存,因此可变。但线程不安全。

四、判等运算符“==” 与equals的区别?

(1)“== ” ⽐较的是引⽤,equals ⽐较的是内容。
(2)如果变量是基础数据类型,“== ”⽤于⽐较其对应值是否相等。如果变量指向的是对象,“== ”⽤于⽐较两个对象是否指向同⼀块存储空间。
(3)equals 是 Object 类提供的⽅法之⼀,每个 Java 类都继承⾃ Object 类,所以每个对象都具有 equals 这个⽅法。Object 类中定义的 equals ⽅法内部是直接调⽤ == ⽐较对象的。但通过覆盖的⽅法可以让它不是⽐较引⽤⽽是⽐较数据内容。

五、简述 Object 类常⽤⽅法。

(1)hashCode:通过对象计算出的散列码。⽤于 map 型或 equals ⽅法。需要保证同⼀个对象多次调⽤该⽅法,总返回相同的整型值。
(2)equals:判断两个对象是否⼀致。需保证 equals ⽅法相同对应的对象 hashCode 也相同。
(3)toString: ⽤字符串表示该对象。
(4)clone:深拷⻉⼀个对象。

六、Java 中⼀维数组和⼆维数组的声明⽅式?

⼀维数组的声明⽅式:

type arrayName[]
type[] arrayName

⼆维数组的声明⽅式:

type arrayName[][]
type[][] arrayName
type[] arrayName[]

其中 type 为基本数据类型或类,arrayName 为数组名字。

七、简述 Java 异常的分类。

Java 异常分为 Error(程序⽆法处理的错误)和 Exception(程序本身可以处理的异常)。这两个类均继承 Throwable。
(1)Error 常⻅的有 StackOverFlowError、OutOfMemoryError 等等。
(2)Exception 可分为运⾏时异常和⾮运⾏时异常。对于运⾏时异常,可以利⽤ try catch 的⽅式进⾏处理,也可以不处理。对于⾮运⾏时异常,必须处理,不处理的话程序⽆法通过编译。

八、简述 throw 与 throws 的区别。

(1)throw ⼀般是⽤在⽅法体的内部,由开发者定义当程序语句出现问题后主动抛出⼀个异常。
(2)throws ⼀般⽤于⽅法声明上,代表该⽅法可能会抛出的异常列表。

九、出现在 Java 程序中的 finally 代码块是否⼀定会执⾏?

(1)当遇到下⾯情况不会执:
当程序在进⼊ try 语句块之前就出现异常时会直接结束;
当程序在 try 块中强制退出时,如使⽤ System.exit(0),也不会执⾏ finally 块中的代码。
(2)其它情况下,在 try/catch/finally 语句执⾏的时候,try 块先执⾏,当有异常发⽣,catch 和 finally 进⾏处理后程序就结束了,当没有异常发⽣,在执⾏完 finally 中的代码后,后⾯代码会继续执⾏。值得注意的是,当 try/catch 语句块中有 return 时,finally 语句块中的代码会在 return 之前执⾏。如果try/catch/finally 块中都有 return 语句,finally 块中的 return 语句会覆盖 try/catch 模块中的 return 语句。

十、final、finally 和 finalize 的区别是什么?

(1)final ⽤于声明属性、⽅法和类,分别表示属性不可变、⽅法不可覆盖、类不可继承。
(2)finally 作为异常处理的⼀部分,只能在 try/catch 语句中使⽤,finally 附带⼀个语句块⽤来表示这个语句最终⼀定被执⾏,经常被⽤在需要释放资源的情况下。
(3)finalize 是 Object 类的⼀个⽅法,在垃圾收集器执⾏的时候会调⽤被回收对象的 finalize()⽅法。当垃圾回收器准备好释放对象占⽤空间时,⾸先会调⽤ finalize()⽅法,并在下⼀次垃圾回收动作发⽣时真正回收对象占⽤的内存。

十一、简述泛型。

泛型,即“参数化类型”,解决不确定对象具体类型的问题。在编译阶段有效。在泛型使⽤过程中,操作的数据类型被指定为⼀个参数,这种参数类型在类中称为泛型类、接⼝中称为泛型接⼝和⽅法中称为泛型⽅法。

十二、简述泛型擦除。

Java 编译器⽣成的字节码是不包涵泛型信息的,泛型类型信息将在编译处理是被擦除,这个过程被称为泛型擦除。

十三、简述注解。

Java 注解⽤于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执⾏,但也有⼀些类型的注解实际上可以⽤于这⼀⽬的。
其可以⽤于提供信息给编译器,在编译阶段时给软件提供信息进⾏相关的处理,在运⾏时处理写相应代码,做对应操作。

十四、简述元注解。

元注解可以理解为注解的注解,即在注解中使⽤,实现想要的功能。其具体分为:
@Retention: 表示注解存在阶段是保留在源码,还是在字节码(类加载)或者运⾏期(JVM 中运⾏)。
@Target:表示注解作⽤的范围。
@Documented:将注解中的元素包含到 Javadoc 中去。
@Inherited:⼀个被@Inherited 注解了的注解修饰了⼀个⽗类,如果他的⼦类没有被其他注解修饰,则它的⼦类也继承了⽗类的注解。
@Repeatable:被这个元注解修饰的注解可以同时作⽤⼀个对象多次,但是每次作⽤注解⼜可以代表不同的含义。

十五、简述 Java 中 Class 对象。

java 中对象可以分为实例对象和 Class 对象,每⼀个类都有⼀个 Class 对象,其包含了与该类有关的信
息。
获取 Class 对象的⽅法:

Class.forName(“类的全限定名”)
实例对象.getClass()
类名.class

相关文章:

Java高频必背面试题基础篇02

一、Java 语⾔中关键字 static 的作⽤是什么? static 的主要作⽤有两个: (1)为某种特定数据类型或对象分配与创建对象个数⽆关的单⼀的存储空间。 (2)使得某个⽅法或属性与类⽽不是对象关联在⼀起&#xf…...

蓝桥杯—stm32g431rbt6串口中断和定时器输出pwm学习

目录 串口中断 定时器中断 输出pwm 串口中断 配置异步模式,使能中断,选择波特率。 串口接收中断开启 HAL_UART_Receive_IT(&huart1,data, 3); 回调函数: void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huar…...

zed驱动的安装 及 遇到问题 及 ros标定

安装zed相机驱动 zed驱动官网 下载.run文件 chmod x ZED_SDK_Ubuntu18_cuda10.2_v4.0.1.zstd.run #换自己的版本号 ./ZED_SDK_Ubuntu18_cuda10.2_v4.0.1.zstd.run #换自己的版本号当遇到 zstd: not found … Decompression failed. 重新安装&a…...

打车代驾顺风车货车租运系统开发功能(司机端)

随着社会经济水平的提高,人们对于打车代驾服务要求也不断提高,更多的人愿意在手机上通过打车代驾APP小程序软件来预约叫车,选择打车代驾服务。打车代驾软件开发是基于广大用户的要求而产生的新型服务方式,满足大众预约出行需要&am…...

CT剂量及描述方法详细介绍

CT剂量和普通放射剂量的区别 普通放射剂量分布区域大,但一般集中在皮肤入射表面,用患者入射表面剂量(ESD)来表征射线剂量; CT剂量分布在窄带内,边缘与中心分布不均匀;且属于多层扫描; 1、在理想…...

Spring Boot应用优雅关闭

POM依赖 在需要实现优雅关闭的应用工程中增加下述依赖&#xff1a;部分启动器默认就依赖了Actuator启动器&#xff0c;如&#xff1a;spring-cloud-starter-netflix-eureka-server&#xff0c;那么下述依赖是可以省略的。 <dependency><groupId>org.springframewo…...

【实用技巧】7-Zip如何加密压缩文件?

7-Zip是一款免费且实用的压缩软件&#xff0c;除了提供多种压缩格式&#xff0c;还可以对压缩文件进行加密保护&#xff0c;加密后只有输入密码&#xff0c;才能打开压缩包里的文件。如果不知道怎么操作的小伙伴&#xff0c;就来看看小编的分享吧。 操作方法&#xff1a; 1、…...

Anaconda详细安装使用

如果想在conda里面删除某个环境&#xff0c;可以使用 conda remove -n name --all 来删除。 其中 conda info --envs 是查看环境&#xff0c;切换环境 activate base 。 Anaconda Anaconda | The Worlds Most Popular Data Science PlatformAnaconda is the birthplace of Pyt…...

git放弃修改,强制覆盖本地代码

在使用Git的过程中&#xff0c;有些时候我们只想要git服务器中的最新版本的项目&#xff0c;对于本地的项目中修改不做任何理会&#xff0c;就需要用到Git pull的强制覆盖&#xff0c;具体代码如下&#xff1a; $ git fetch --all $ git reset --hard origin/master $ git pu…...

大数据自我进阶(数据仓库)-暂未完全完成

什么时候需要数据仓库&#xff1f; 1.当决策者要进行战略分析或者展示统计的需求。 2.并且数据量非常庞大&#xff0c;而且各个都是数据孤岛。 当满足这2个条件后&#xff0c;就需要搭建数据仓库。 数据仓库的第一步&#xff08;数据清洗&#xff09; 为了能准确的分析&am…...

Springmvc中跨服务器文件上传

既然跨服务器&#xff0c;就要开启两个服务器&#xff0c;这里使用两个Tomcat代表两个服务器 文章目录 1.建立图片要上传到的服务器&#xff1a;FileUpload 2.建立上传图片的服务器&#xff1a;Tomcat 9.0.24 3.在Tomcat 9.0.24上部署文件上传的项目&#xff0c;写代码 3.1导入…...

常见漏洞扫描工具AWVS、AppScan、Nessus的使用

HVV笔记——常见漏洞扫描工具AWVS、AppScan、Nessus的使用1 AWVS1.1 安装部署1.2 激活1.3 登录1.4 扫描web应用程序1.4.1 需要账户密码登录的扫描1.4.2 利用录制登录序列脚本扫描1.4.3 利用定制cookie扫描1.5 扫描报告分析1.5.1 AWVS报告类型1.5.2 最常用的报告类型&#xff1a…...

Vue学习——【第二弹】

前言 上一篇文章 Vue学习——【第一弹】 中我们学习了Vue的相关特点及语法&#xff0c;这篇文章接着通过浏览器中的Vue开发者工具扩展来进一步了解Vue的相关工作机制。 Vue的扩展 我们打开Vue的官方文档&#xff0c;点击导航栏中的生态系统&#xff0c;点击Devtools 接着我…...

恐怖的ChatGPT!

大家好&#xff0c;我是飞哥&#xff01;不知道大家那边咋样。反正我最近感觉是快被ChatGPT包围了。打开手机也全是ChatGPT相关的信息&#xff0c;我的好几个老同学都在问我ChatGPT怎么用&#xff0c;部门内也在尝试用ChatGPT做一点新业务出来。那就干脆我就趁清明假期这一天宝…...

MIPI D-PHYv2.5笔记(12) -- Clock Lane的ULPS

声明&#xff1a;作者是做嵌入式软件开发的&#xff0c;并非专业的硬件设计人员&#xff0c;笔记内容根据自己的经验和对协议的理解输出&#xff0c;肯定存在有些理解和翻译不到位的地方&#xff0c;有疑问请参考原始规范看 LP Mode的Clock Lane ULPS 尽管Clock Lane不包含常规…...

创建网络数据集

目的&#xff1a;主要是用来做路径规划。 第一步&#xff1a;加载用作构建网络数据集的道路网数据到arcmap。 第二步&#xff1a;做打断处理。【如果线数据未做过打断处理&#xff0c;需要做这一步。】 有两种方式【1、编辑器里面的高级编辑器的打断相交线功能&#xff1b;2、…...

从功能到年薪30W+的测试开发工程师,分享我这10年的职业规划路线

求职&#xff1f;择业&#xff1f;跳槽&#xff1f;职业规划&#xff1f; 作为一名初出茅庐的软件测试员&#xff0c;职业发展的道路的确蜿蜒曲折&#xff0c;面对一次次的岗位竞争&#xff0c;挑战一道道的面试关卡&#xff0c;一边带着疑惑&#xff0c;一边又要做出选择&…...

ChatGPT中文免登陆-ChatGPT中文版上线

ChatGPT不支持地区 ChatGPT 是一个开源平台&#xff0c;可在全球范围内使用&#xff0c;不应该存在地区限制。然而&#xff0c;由于某些原因&#xff0c;可能有地区对 ChatGPT 的访问有限制或屏蔽的情况。 如果您发现自己无法访问 ChatGPT&#xff0c;可以尝试以下解决方法&a…...

多线程之最大并行数

4核8线程&#xff0c;采取超线程技术&#xff0c;将一个核心模拟成两个线程。 public class 最大并行数 {public static void main(String[] args) {//向java虚拟机返回可用处理器的数目//getRuntime获取运行状态&#xff0c;获取可用线程数int countRuntime.getRuntime().ava…...

智慧城市发展的基本原理是什么?

智慧城市的建设与发展遵循一定的基本原理。随着智慧城市的持续迭代升级&#xff0c;智慧城市已经从信息化建设与信息技术产品应用阶段&#xff0c;演进到了信息化与城市现代化深度融合阶段&#xff0c;其基本原理也在发生变化。当前&#xff0c;随着数字技术的发展与成熟应用&a…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...