Java基础篇常见面试问题总结

文章目录

  • 1. 你是怎样理解 OOP面向对象?
  • 2. 重载与重写区别
  • 3. 接口与抽象类的区别
  • 4. 深拷贝与浅拷贝的理解
  • 5. 什么是自动拆装箱? int和 Integer有什么区别
  • 6. ==和 equals()区别
  • 7. String类 能被继承吗为什么用 final修饰
  • 8. final、finally、finalize区别

1. 你是怎样理解 OOP面向对象?

面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征:

  • 继承:继承是从已有类得到继承信息创建新类的过程
  • 封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义
    的接口
  • 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应

2. 重载与重写区别

  • 重载发生在本类,重写发生在父类与子类之间
  • 重载的方法名必须相同,重写的方法名相同且返回值类型必须相同
  • 重载的参数列表不同,重写的参数列表必须相同
  • 重写的访问权限不能比父类中被重写的方法的访问权限更低
  • 构造方法不能被重写

3. 接口与抽象类的区别

  • 抽象类要被子类继承,接口要被类实现
  • 抽象类可以有构造器、接口不能有构造器
  • 抽象类:可以有成员变量;接口:只能声明常量

4. 深拷贝与浅拷贝的理解

深拷贝和浅拷贝就是指对象的拷贝,一个对象中存在两种类型的属性,一种是基本数据类型,一种是实例对象的引用。

  • 浅拷贝是指,只会拷贝基本数据类型的值,以及实例对象的引用地址,并不会复
    制一份引用地址所指向的对象,也就是浅拷贝出来的对象,内部的类属性指向的
    是同一个对象
  • 深拷贝是指,既会拷贝基本数据类型的值,也会针对实例对象的引用地址所指向
    的对象进行复制,深拷贝出来的对象,内部的类执行指向的不是同一个对象

5. 什么是自动拆装箱? int和 Integer有什么区别

  • 装箱:将基本类型转换成包装类对象
  • 拆箱:将包装类对象转换成基本类型的值

java 为什么要引入自动装箱和拆箱的功能?

主要是用于 java集合中,List list=new ArrayList();
list 集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。

区别:

  • Integer是 int的包装类,int则是 java的一种基本数据类型
  • Integer变量必须实例化后才能使用,而 int变量不需要
  • Integer实际是对象的引用,当 new一个 Integer时,实际上是生成一个指针指向此对象;而 int则是直接存储数据值
  • Integer的默认值是 null,int的默认值是 0

6. ==和 equals()区别

  1. ==
    • 如果比较的是基本数据类型,那么比较的是变量的值
    • 如果比较的是引用数据类型,那么比较的是地址值(两个对象是否指向同一块内
      存)
  2. equals
    • 如果没重写 equals方法比较的是两个对象的地址值
    • 如果重写了 equals方法后我们往往比较的是对象中的属性的内容
    • equals 方法是从 Object类中继承的,默认的实现就是使用==

很多类(如 String, Integer 等)都重写了 equals() 方法,以提供逻辑上的比较。

7. String类 能被继承吗为什么用 final修饰

  • 不能被继承,因为 String类有 final修饰符,而 final修饰的类是不能被继承的
  • String 类是最常用的类之一,为了效率,禁止被继承和重写。
  • 为了安全。String类中如果方法可以重写,可能被植入恶意代码,破坏程序。Java的安全性也体现在这里。

8. final、finally、finalize区别

  1. final
    final 是一个关键字,用于限定变量、方法、和类的行为:

    • 变量:当 final 修饰一个变量时,这意味着该变量一旦被初始化之后,其值就不能再被修改(即常量)。
    • 方法:final 修饰的方法不能被子类重写。
    • 类:final 修饰的类不能被继承。
  2. finally
    finally 是一个块,通常与try和catch块一起使用,在异常处理中起到关键作用。finally 块中的代码段总是会执行,无论try块中的代码是否抛出异常。这使得finally块非常适合用于清理资源,比如关闭文件流或数据库连接。
    例如:

try {// 尝试执行的代码,可能会抛出异常
} catch (Exception e) {// 处理异常
} finally {// 清理代码,无论是否发生异常都会执行
}
  1. finalize
    finalize 用于对象被垃圾回收前的清理工作,但不建议使用。因为它是不可预测的,通常也不是必须的,而且可能导致性能问题。
@Override
protected void finalize() throws Throwable {try {// 清理资源等操作} finally {super.finalize();}
}

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

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

相关文章

【C语言】6.C语言VS实用调试技巧(1)

文章目录 1.什么是 bug2.什么是调试(debug)?3.Debug 和 Release4.VS调试快捷键4.1 环境准备4.2 调试快捷键 5.监视和内存观察5.1 监视5.2 内存 1.什么是 bug bug现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题…

Git使用(3):版本管理

一、查看历史 编写一个java类进行测试 选择Git -> Show Git Log查看日志。 第一次修改推送到远程仓库了,所以有origin(远程仓库地址),第二次修改只提交到本地仓库所以没有。 二、版本回退 1、本地回退 在要回退的版本上右键&a…

XLSX文件删除了怎么找回?8个恢复方法,太实用了!

U盘作为一种便携的存储设备,随之而来的数据丢失问题也让人头疼。尤其是当U盘中的XLSX文件(Excel 2007及以后版本的默认文件格式)被误删除或丢失时,如何高效找回这些数据成为了许多人关注的焦点。 本文将从XLSX文件的特性、U盘格式…

C++set关联式容器

Cset 1. 关联式容器 vector、list、deque、forward_list(C11)等STL容器,其底层为线性序列的数据结构,里面存储的是元素本身,这样的容器被统称为序列式容器。而map、set是一种关联式容器,关联式容器也是用来存储数据的&#xff0…

深度盘点在当今经济形势下资深项目经理或PMO的或去或从

在当今经济形势下,资深项目经理(Project Manager)或项目管理办公室(PMO)的去向和选择受到多种因素的影响。以下是对他们可能面临的或去或从的深度盘点: 1、发展去向 1. 深化专业领域:在经济形势…

Linux程序开发(一):Linux基础入门安装和实操手册

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

CSAP_MAT_BOM_MAINTAIN 返回消息处理

CSAP_MAT_BOM_MAINTAIN是创建修改BOM的函数,但这个函数的返回参数中没有消息返回。 需要在调用前使用函数: CALL FUNCTION CALO_INIT_APIEXPORTINGdata_reset_sign EXCEPTIONSlog_object_not_found 1log_sub_object_not_found 2other_e…

QT笔记 - QPainter 填充环形区域(甜甜圈)

以矩形为例: QPainter painter(this);// painter.setPen(Qt::blue);// painter.setFont(QFont("Arial",30));// painter.drawText(rect(),Qt::AlignCenter,"Hello Qt!!!");QRect rect QRect(50, 50, 400, 400);QRect box QRect(100, 100, 105…

TS-抽象类和静态成员

目录 1,抽象类1,为什么需要抽象类2,抽象成员3,设计模式-模板模式 2,静态成员1,什么是静态成员2,设计模式-单例模式 1,抽象类 1,为什么需要抽象类 有时,某个…

Java面试八股之Java中有哪些原子类,原理是什么

Java中有哪些原子类,原理是什么 AtomicInteger 和 AtomicLong: 用于对整数(int)和长整数(long)进行原子操作。 原理:它们内部封装了一个整型或长整型变量,并通过使用Unsafe类提供…

HarmonyOS - 记一次HSP异常堆栈无法定位问题

问题背景 HSP混淆打包之后无法定位异常堆栈,问题堆栈为: MyModules/build/default/cache/default/defaultCompileArkTS/esmodule/release/MyModules/src/main/ets/d/r.ts:1:1 问题原因: 导致无法定位问题的原因是,混淆时开启了代码…

OpenHarmony 实战开发——ArkUI容器类API介绍

容器类,顾名思义就是存储的类,用于存储各种数据类型的元素,并具备一系列处理数据元素的方法。在 ArkUI 开发框架中,容器类采用了类似静态的语言来实现,并通过 NAPI 框架对外提供。通过对存储位置以及属性的限制&#x…

关于数据结构B+TREE 和 HASH的整理

一、BTREE BTree是一种树数据结构,是B-Tree的变种,属于n叉排序树,每个节点通常有多个孩子。 BTree是和B-Tree相比,BTree的所有的数据都会出现在叶子节点上,并且叶子节点会形成一个单向链表,非叶子节点仅仅…

C++map容器关联式容器

Cmap 1. 关联式容器 vector、list、deque、forward_list(C11)等STL容器,其底层为线性序列的数据结构,里面存储的是元素本身,这样的容器被统称为序列式容器。而map、set是一种关联式容器,关联式容器也是用来存储数据的&#xff0…

日期问题,

日期问题 ac代码 #include <cstdio> #include <iostream>using namespace std;int days[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};bool check_valid(int year, int month, int day) {if (month 0 || month > 12) return false;if (day 0) …

【开发】模型部署笔记

目录 模型量化 模型量化 1、模型量化优点 低精度模型表示模型权重数值格式为FP16&#xff08;半精度浮点&#xff09;或者INT8&#xff08;8位定点整数&#xff09;&#xff0c;但是目前低精度往往就指代INT8。常规精度模型则一般表示模型权重数值格式为FP32&#xff08;32位…

求数组最大值

#include <bits/stdc.h> using namespace std; int main(){int a[4]{1,2,3,4};cout<<*max_element(a,a4);return 0; }

策略模式详解

策略模式 1 概述 先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿&#xff0c;开发需要选择一款开发工具&#xff0c;当然可以进行代码开发的工具有很多&#xff0c;可以选择Idea进…

JavaScript的跳转传参方式

在JavaScript中&#xff0c;页面跳转并传递参数通常可以通过几种不同的方式来实现。下面是一些常见的方法&#xff1a; 1.URL参数&#xff08;Query String&#xff09; 这是最常见的方式&#xff0c;通过在URL的末尾添加参数来实现。例如&#xff1a; javascriptwindow.loc…

gitlab webhook触发jenkins任务

配置jenkins 安装gitlab插件 配置jenkins job 选择gitlab webhook触发 在高级中生成token 代码仓设置 新增webhook 配置webhook 测试连接 缺点&#xff0c;不能带gitLab事件的参数&#xff01;&#xff01;&#xff01;