如果等于888,则发送邮件

作为一名java程序员,我不知道您是否掌握了一些基本知识。

有时,在长时间检查错误后,结果证明是低级错误。

有时,在某些代码中,这批数据正常工作,但当一批数据发生更改时会发生异常。

有时,您可能会看到一行代码,并想知道:为什么这行代码会出错

今天,让我们谈谈99%的Java程序员已经或将要踩到的六个坑。

我不知道你是否在项目中见过它。一些同事用数字来比较类型的两个参数是否相等

不管怎样,我已经看过了。是这样吗

我的答案是看具体的场景,我不能说它一定是对的或错的。

此时,if==用于确定其是否相等:

返回的结果是否为真

答案是错误的。

为什么是假的

 如果等于888,则发送邮件 热门话题

它实际上没有被使用。

缓存在哪里使用

答案在方法中:

 如果等于888,则发送邮件 热门话题

如果上述判断改变为:

返回的结果是否为真

回答:这是真的。

相反,使用该方法来判断:

运行结果为真。

假设需要判断当前登录的用户,如果是我们指定的系统管理员,则需要发送电子邮件。系统管理员没有特殊字段ID,其用户ID=888。此值在开发、测试和生产环境中相同。

这一要求很容易实现:

从当前登录用户的上下文中获取用户信息。如果用户信息为空,将直接返回。

如果获取的用户信息不是空的,则接下来确定用户ID是否等于888。

如果等于888,则发送邮件。

如果不等于888,我什么也不做。

在使用系统管理员帐户id=888登录后,我们进行了相关操作,并期待收到电子邮件,但我们发现我们很孤独。

此时,一些朋友可能会说:我看不出有什么问题。

但我想说的是,这段代码有问题。

有什么问题

让我们关注一下它的equals方法:

equals方法的逻辑如下:

该方法首先确定对象a和B的引用是否相等。如果它们相等,则直接返回true。

如果引用不相等,则判断a是否为空。如果a为空,则返回false。

如果a不为空,则调用对象的equals方法以进一步确定值是否相等。

这取决于测试方法。

其equals方法的具体代码如下:

常见的凹坑有:

通常我们会将一些十进制类型的字段定义为,而不是,以避免丢失精度。

这种情况可能发生在使用double时:

然而,执行结果是:

实际结果小于预期结果。

双精度类型的两个参数的减法将转换为二进制,因为双精度的有效位数为16,这将导致小数位数不足的情况,在这种情况下,将发生错误。

常识告诉我们,使用可以避免失去精度。

答案是否定的。

为什么

结果:

这是不科学的。你为什么会失去准确性

在上述段落中有一个描述:

 如果等于888,则发送邮件 热门话题

那么,我们如何才能不失去准确性呢

我们可以使用这种方法转换双类型小数,这样可以确保精度不会丢失。

事实上,有更好的方法:

你必须熟悉汉语的用法。

通过对的操作,我们可以实现:遍历集合、过滤数据、排序、判断、转换集合等多功能。

这里我们将重点介绍数据过滤。

在Java 8之前,我们通常按如下方式过滤数据:

通常需要另一套设备来辅助此功能。

但是,如果使用Java 8的函数,代码将变得更简单,例如:

代码简化且完美。

但如果修改过滤后的数据:

您可能只想修改过滤后的数据,但实际上,您将一起修改元素数据。

你感到惊讶吗

根本原因是在过滤后的集合中,保存了对象的引用,而引用只有一条数据。

换句话说,只要引用对象的值在一个位置修改,其他位置也将同步修改。

如下图所示:

 如果等于888,则发送邮件 热门话题

之后,提供和的功能。

自动打包意味着JDK将自动将基本类型更改为打包类型。

例如:

相当于:

自动解包意味着JDK将自动将包类型转换为基本类型。

例如:

相当于:

然而,在实际工作中,当我们使用自动开箱时,我们经常忘记判断空位,导致异常。

很多时候,我们需要计算传入数据,例如:

如果传入空值:

将直接报告错误。

有时,我们定义的方法是基本类型,但实际上已上载到包装器类中,例如:

如果add方法报告异常,您可能会感到困惑。int类型中如何发生空指针异常

官方JDK给出了答案。

 如果等于888,则发送邮件 热门话题

此方法替换每个匹配字符串。

有两种方法。

例如,替换普通字符串:

替换为正则表达式:

但是,请注意不要使用以下措辞:

这种书写方式将导致字符串不可替代。

有一个小问题。如果我只想替换第一个匹配字符串呢

此时,您可以使用以下方法:

说实话,这里的内容很基本,但越基本的东西,就越容易不小心失去荆州,踩在坑上。

最后,统计数据显示,没有踩过这些坑的学生,请举手。


这一要求很容易实现:

[直播竞答]

发表评论

Copyright 2002-2022 by 茜申时尚百货品牌网(琼ICP备2022001899号-3).All Rights Reserved.