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 等等

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

  • 浅拷贝 :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对"主"对象进行拷贝,但不会复制主对象里面的对象。"里面的对象"会在原来的对象和它的副本之间共享。
  • 深拷贝 :深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍
相关推荐
我命由我123455 小时前
Java 并发编程 - Delay(Delayed 概述、Delayed 实现、Delayed 使用、Delay 缓存实现、Delayed 延迟获取数据实现)
java·开发语言·后端·缓存·java-ee·intellij-idea·intellij idea
北城以北88885 小时前
SSM--MyBatis框架之缓存
java·缓存·intellij-idea·mybatis
kyle~5 小时前
算法数学---差分数组(Difference Array)
java·开发语言·算法
曹朋羽5 小时前
Spring EL 表达式
java·spring·el表达式
沐浴露z5 小时前
详解JDK21新特性【虚拟线程】
java·开发语言·jvm
No0d1es6 小时前
电子学会青少年软件编程(C/C++)1级等级考试真题试卷(2025年9月)
java·c语言·c++·青少年编程·电子学会·真题·一级
T___T6 小时前
全方位解释 JavaScript 执行机制(从底层到实战)
前端·面试
9号达人6 小时前
普通公司对账系统的现实困境与解决方案
java·后端·面试
超级苦力怕6 小时前
Java 为何 long a = 999999999 能过;long a = 9999999999 报错?一文讲透“宽化转换”
java
佐杰6 小时前
Jenkins使用指南1
java·运维·jenkins