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

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

  • 浅拷贝 :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对"主"对象进行拷贝,但不会复制主对象里面的对象。"里面的对象"会在原来的对象和它的副本之间共享。
  • 深拷贝 :深拷贝是一个整个独立的对象拷贝,深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍
相关推荐
python_chai28 分钟前
Python核心数据结构详解:元组、集合与字典
java·数据结构·python
老华带你飞2 小时前
医药垃圾分类管理系统|基于SSM+vue医药垃圾分类管理系统的系统设计与实现(源码+数据库+文档)
java·数据库·vue·毕业设计·论文·ssm·医药垃圾分类管理系统
程序员小续2 小时前
React 多个 HOC 嵌套太深,会带来哪些隐患?
java·前端·javascript·vue.js·python·react.js·webpack
rider1893 小时前
【9】搭建k8s集群系列(二进制部署)之安装work-node节点组件(kube-proxy)和网络组件calico
java·容器·kubernetes
ゞ 正在缓冲99%…3 小时前
leetcode274.H指数
java·算法·leetcode
旷野本野4 小时前
【Java】Maven
java·开发语言·maven
坊钰5 小时前
【MySQL 数据库】数据类型
java·开发语言·前端·数据库·学习·mysql·html
药尘师5 小时前
idea运行tomcat项目,很慢的问题
java·ide·intellij-idea
Kale又菜又爱玩5 小时前
Sentinel全面解析与实战教程
java·spring·微服务·sentinel·springboot·springcloud
唐人街都是苦瓜脸5 小时前
SpringBoot的简单介绍
java·spring boot·后端