面试题2021.11.29----java基础

2023-11-09

2021.11.29----java基础

1.请你解释为什么会出现4.0-3.6=0.40000001这种现象?

答:这是因为二进制数没办法准确的表示十进制数的数,十进制的小数在转化为二进制是会有误差,导致该运算结果的诞生。

2.请你说说Lamda表达式的优缺点。

答:优点:简洁,便于书写,应用的越来越多,将会影响未来的编码形式。

​ 缺点:效率没有传统的直接写函数或是for的效率高,而且代码的可读性降低。难以调试

3. 请你说明符号“==”比较的是什么?

答:分为两种情况,在对象对比时,他比较的是引用的地址,而比较的如果是基本数据类型,那他比较的就是基本数据类型的值。

4.请你解释Object若不重写hashCode()的话,hashCode()如何计算出来的?

答:hashcode的方法是本地方法,是由c++实现的该方法返回的是对象的内存地址。

public final native hashcode()

5.为什么重写equals()就一定要重写hashCode()方法?

答:首先HashMap,HashSet集合添加元素时要进行两次检查,检查hashcode是否相等再检查equals是否相等,两个都不相等才能添加这个元素,保证元素不重复。

我们再回到Object类说起,Objiecr类的equals()是对两个对象的内存地址进行判断,hashcode()也只是返回对象的内存地址。

我们创建两个不同的对象,让他们的值一样,因为它们两个的内存地址不同,所以HashMap()还是默认能添加这两个的。

但就数据意义来看,它们就是相同的。所以添加一个就行了。

	Student s1 = new Student("lisi",12);
	Student s2 = new Student("lisi",12);

这有时候原有的不能满足我们的要求,我们需要重写,使得equals()和hashcode()都判定这两个对象相同。

这就我们去重写。

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((name == null) ? 0 : name.hashCode());
	return result;
}
@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Student other = (Student) obj;
	if (name == null) {
		if (other.name != null)
			return false;
	} else if (!name.equals(other.name))
		return false;
	return true;
}

所以,不能只改动euqals(),也要改动hashcode来让两个都判定一致。

同时这样重写也能提高效率。

因为,hashcode()和equals()遵循以下规则:

如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同!!!

如果两个对象的hashCode不同,那么他们肯定不同(即用equals比较返回false)

所以,都重写后有时候只需要判断hashCode一次就可以了。

小补充:String对equals和hashcode的重写:

String中的equals

1.同一对象 (true)

2.同一类型&&长度相等&&值相等 ( true)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试题2021.11.29----java基础 的相关文章

  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • Java:使用 HttpURLConnection 的 HTTP PUT

    如何执行 HTTP PUT 我正在使用的类似乎认为它正在执行 PUT 但端点将其视为我执行了 GET 我做错了什么吗 URL url new URL https HttpURLConnection conn HttpURLConnectio
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 无法加载或查找主类,可以在命令行中使用,但不能在 IDE 中使用[重复]

    这个问题在这里已经有答案了 在将其标记为重复之前 请先听我说完 我正在尝试使用 gradle 导入一个 java 项目 功能齐全 适用于所有其他笔记本电脑 没有问题 我的项目 100 正常运行 适用于所有其他笔记本电脑 当我的笔记本电脑被重
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • 如何在 Eclipse Java 动态 Web 项目中使用 .properties 文件?

    我正在 Eclipse 中开发动态 Web 项目 我创建了一个 properties 文件来存储数据库详细信息 用户名 密码等 我通过右键单击项目和 New gt File 添加它 我使用了Java util包Properties类 但它不
  • 逃离的正确方法是什么?使用 Oracle 12c MATCH_RECOGNIZE 时 JDBCPreparedStatement 中的字符?

    以下查询在 Oracle 12c 中是正确的 SELECT FROM dual MATCH RECOGNIZE MEASURES a dummy AS dummy PATTERN a DEFINE a AS 1 1 但它不能通过 JDBC
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • 启动Java项目时发生类冲突:ClassMetadataReadingVisitor将接口org.springframework.asm.ClassVisitor作为超类

    我正在使用最新的Spring框架版本 3 2 2 RELEASE 开发一个Java Web项目 但是现在项目启动时遇到了问题 详细错误是 java lang IncompleteClassChangeError 类 org springfr

随机推荐

  • Python-GIL深度理解

    1 GIL介绍 GIL 意为全局解释器锁 是cPython执行多线程 进程计算密集型代码效果不如人意的主要原因 cPython限制一个进程内同时只能执行一个线程 首先介绍一下 正常多线程 进程执行时 多线程 进程数据混乱的原因 cpu分成多
  • Ubuntu中安装Python的mysqlclient的相关命令

    在Ubuntu中安装Python的mysqlclient的相关命令 安装MySQL数据库 具体步骤如下 apt get update apt get install python pip 已经有pip命令则跳过此步骤 apt get ins
  • 搭建个人网站,服务器应该怎么选择。

    新手怎么去挑选服务器的配置呢 目前不管是个人还是企业 只要是需要在网上开展业务的话 都需要有自己的网站或者应用程序 VPS因为性能较低使用不太方便 渐渐被淘汰出市场 那么在各类服务器的选项下 怎么选择适合的配置呢 一 服务器区域 影响一个网
  • VMware安装ubuntu连接互联网和主机

    1 需求 ubuntu既需要连接互联网也需要和主机进行ssh操作 2 实现 2 1 VMware查看NAT IP 如下图 VMware随机生成的一个IP 无需手动修改 2 2 对虚拟机设置使用NAT模式 2 3 修改物理机网卡 修改物理机v
  • Mybatis、MybatisPlus自定义返回单个Map集合

    1 mybatis返回单个map存单条数据 mapper接口 Map
  • 【Fluent】雷诺方程:推导与求解(附MATLAB代码)

    目录 引言 雷诺方程的推导 雷诺方程的解 雷诺方程的推广 有限体积法 引言 雷诺方程 即湍流的平均运动方程 所属黏性不可压缩流体动力学 从Navier Stokes方程派生 是经典润滑理论的基本方程之一 1886年 奥斯本 雷诺兹 Osbo
  • 【单片机毕业设计】【dz-078】基于物联网的环境测控系统设计

    最近设计了一个项目基于物联网的环境测控系统设计 与大家分享一下 一 基本介绍 项目名 WIFI环境监测 实物 项目编号 mcuclub dz 078 单片机类型 STM32F103C8T6 具体功能 1 通过DHT11检测温湿度 当温湿度超
  • Python判断字符串是否为字母或者数字

    str 1 123 str 2 Abc str 3 123Abc isdigit函数判断是否数字 print str 1 isdigit True print str 2 isdigit False print str 3 isdigit
  • 算法笔记——力扣。持续更新

    动态规划 算法复习 动态规划 HongmingYou 博客园 T583
  • 【tflearn系列教程】(二)如何安装tflearn

    本教程参考自tflearn官方文档 英文版 http tflearn org 主要是对官方文档的翻译与讲解 并结合本人实战经验而作 如有错误 欢迎指出 作者 totorocyx 邮箱 847994259 qq com 转载请联系 一 从te
  • Android Service 加载 GLSurfaceView 显示动画

    先说遇到的需求 要在不影响前台应用的情况下 弹出一些通知 且样式比较花哨 所以用后台Service GLSurfaceView的方式做个小demo 趟一趟路 实现的效果就是这样了 就是桌面有个cube一直转圈圈 不影响其他任何操作 简单来说
  • 西门子1500可编程逻辑控制器语言介绍(1)----CEM语言

    一 CEM的基本信息 1 CEM编程语言介绍 cem编程语言又称因果矩阵 用于快速的将原因与结果之间的关系清晰地表达出来 在该编程语言中 过程事件称为 原因 过程之后的反映称为 结果 一个 原因 可以激活多个结果 结果由列表示 原因与结果的
  • MobaXterm_Personal_10.9 密钥生成及使用

    MobaXterm Personal 个人认为要比PuTTY SmarTTY SecureCRT XShell等SSH终端功能界面交互 功能上好许多 它可以和虚拟机中的Linux共享一套配置信息 本文简单交流一下关于MobaXterm密钥生
  • 【cdk的使用】C语言 跨平台的原子操作

    Github地址 https github com wujin1989 cdk 有过C开发的朋友都知道 在不同平台上原子操作的API是不一样的 这就导致如果想开发一个跨平台的lock free程序是痛苦的 怎么办 凉拌 只能手撸 好在cdk
  • 【读书笔记——开关电源】《精通开关电源设计》(1)

    第一章 开关功率变换原理 文章目录 第一章 开关功率变换原理 前言 1 1 概念和基本术语 1 2 电感 电感充放电的基本原理 功率变化中的稳态与不同工作模式 伏秒定律与占空比 开关器件的使用与保护 1 3 开关拓扑的演变 通过二极管控制感
  • 从自动贩卖机找零看Python中的动态规划问题

    原文 http www jianshu com p 144db81341a3 从自动贩卖机找零看Python中的动态规划问题 问题描述 假设在某国存在 1 x1 x2 x3 xn 多种货币 该国的自动贩卖机在找零时要遵循一个原则 找零的总张
  • LeetCode 62. 不同路径

    62 不同路径 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同的路径 示例 1 输入 m 3
  • ubuntu使用记录(2)在ubuntu下安装ssh时一直显示E: 无法定位软件包 sshd

    在ubuntu下安装ssh时一直显示E 无法定位软件包 sshd 安装方法 点击我们屏幕左上角的小齿轮 设置 gt 关于 gt 系统设置 gt 软件和更新 在点击其他后会跳出 我们直接点击选择最佳服务器即可 我电脑上是清华的最快
  • LeetCode 135. 分发糖果--排序判断

    分发糖果 老师想给孩子们分发糖果 有 N 个孩子站成了一条直线 老师会根据每个孩子的表现 预先给他们评分 你需要按照以下要求 帮助老师给这些孩子分发糖果 每个孩子至少分配到 1 个糖果 评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果 那
  • 面试题2021.11.29----java基础

    2021 11 29 java基础 1 请你解释为什么会出现4 0 3 6 0 40000001这种现象 答 这是因为二进制数没办法准确的表示十进制数的数 十进制的小数在转化为二进制是会有误差 导致该运算结果的诞生 2 请你说说Lamda表