Java面试题(基础篇)③

目录

[一,== 与 equals 的区别?](#一,== 与 equals 的区别?)

二,接口和抽象类的区别?

三,请说出几个常见的异常?

[四,请问你对Java 反射有了解吗?](#四,请问你对Java 反射有了解吗?)

五,浅拷贝和深拷贝区别?


一,== 与 equals 的区别?

  1. ==是一个运算符 ,equals 是 Object 类的方法

  2. 用于基本类型的变量比较时: ==比较的是值是否相等,equals不能直接用于基本数据类型的比较,需要转换为其对应的包装类型。

  3. 用于引用类型的比较时。==和 equals 都是比较栈内存中的地址是否相等。但是通常会重写 equals 方法去实现对象内容的比较。

二,接口和抽象类的区别?

它们的共同点是:都不能实例化对象

基于JDK1.8之后

它们的不同点是:

  1. 抽象类一般用于抽取子类中的共同方法和属性,接口一般用于指定实现类的规范

  2. 抽象类可以有构造方法,作用是用给抽象父类中中的属性赋值;接口中不能有构造方法

  3. 接口中不能含有静态代码块,而抽象类可以有静态代码块

  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

三,请说出几个常见的异常?

Java中的异常分为运行时异常和编译时异常两大类:

  1. 运行时异常都是 RuntimeException 类及其子类异常,这类异常的特点是不强行要求程序员进行处理,常见的有

    NullPointerException 空指针异常,调用了未经初始化的对象或者是不存在的对象

    IndexOutOfBoundsException 数组角标越界异常,常见于操作数组对象时发生

    ClassCastException 数据类型转换异常

    NoSuchMethodException 方法不存在异常

  2. 非运行时异常,也叫编译异常(CheckedException),是 Exception 的子类但不是 RuntimeException的子类,类型上都属于及其子类

    它要求程序员在编写代码的过程中提供异常处理方案,否则编译不通过,常见的有:IOException和SQLException等

四,请问你对Java 反射有了解吗?

反射是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并且可以调用它的任意一个方法它主要应用于大量的框架底层,比如 Spring/Spring Boot、MyBatis 等等

五,浅拷贝和深拷贝区别?

  • 浅拷贝 :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对"主"对象进行拷贝,但不会复制主对象里面的对象。"里面的对象"会在原来的对象和它的副本之间共享。
  • 深拷贝 :深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍
相关推荐
han_1 分钟前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
華勳全栈12 分钟前
两天开发完成智能体平台
java·spring·go
alonewolf_9917 分钟前
Spring MVC重点功能底层源码深度解析
java·spring·mvc
沛沛老爹22 分钟前
Java泛型擦除:原理、实践与应对策略
java·开发语言·人工智能·企业开发·发展趋势·技术原理
专注_每天进步一点点23 分钟前
【java开发】写接口文档的札记
java·开发语言
代码方舟26 分钟前
Java企业级实战:对接天远名下车辆数量查询API构建自动化风控中台
java·大数据·开发语言·自动化
zgl_2005377935 分钟前
ZGLanguage 解析SQL数据血缘 之 标识提取SQL语句中的目标表
java·大数据·数据库·数据仓库·hadoop·sql·源代码管理
liwulin050636 分钟前
【JAVA】创建一个不需要依赖的websocket服务器接收音频文件
java·服务器·websocket
钦拆大仁42 分钟前
统一数据返回格式和统一异常处理
java
czlczl200209251 小时前
OAuth 2.0 解析:后端开发者视角的原理与流程讲解
java·spring boot·后端