百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

教你如何在Java中更好的定义常量(java定义常数)

yund56 2025-05-06 16:33 23 浏览

关于Java中常量的话题似乎有很多困惑。有些人使用整数或字符串来定义常量,而另一些人则使用枚举。

我还遇到了在它们自己的接口中定义的常量——在接口中,使用常量的类必须实现接口。这种策略通常被称为接口常量设计模式。

在本文中,我们将了解在Java中存储常量的两种最常见的策略:整数和枚举。

首先也是最重要的,当你决定使用常量时,你应该非常确定常量不会随着时间而改变,这样你就可以避免重新编译。

在这篇文章中,我们将使用一个非常常见的常量候选——工作日!

假设我们有一个表示在线商店中订单的类,我们希望在其中跟踪订单发生在一周中的哪一天。

看起来是这样的:

请注意,该类暂时不会编译-[数据类型]只是我们将使用的常量类型的占位符。

用整数定义常数

在Java中,定义常量最常用的方法之一是通过整数,其中整数变量是静态的。

定义整数常量时要问的第一个问题是将它们放置在何处。我们是否将它们直接放在班级中?还是给他们上课?

由于days非常通用,而且不一定只连接到Order类型的对象,因此我们将在它们自己的类WeekDay中定义它们。

你可能注意到了私有构造函数——这是为了避免客户端实例化类。该类只保存静态变量,这些变量没有绑定到对象,因此不需要实例化该类。

现在,每当我们需要为订单设定一个特定的日期时,我们都会这样做:

当我们想检查订单是否发生在星期五时,我们可以简单地调用write:

到目前为止,还不错。这个设计肯定不会有什么问题吧?

假设你一年后会回到这个代码,你必须检查下订单是否在周一发生。

在这种情况下,可以尝试以下方法:

在那一刻,完全忘记了WeekDay类,这段代码非常有意义。星期一是一周的第一天,所以工作日应该是1,对吧?

但不是,因为静态in t变量Monday在我们的WeekDay类中定义为0!

这是一个很好的例子,说明了为什么应该考虑避免使用整数常量。它们容易出错和混淆,并且很难调试。

用枚举定义常量

在Java中定义常量的另一种方法是使用枚举。

当使用枚举时,常量类将如下所示:

注意,没有私有构造函数-不需要程序员(你!)强制该类是不可实例化的,因为枚举在默认情况下是不可实例化的!

将工作日设置为顺序的语法与整型常量的语法完全相同:

我们如何在星期五处理订单也没有什么不同:

关键的区别在于,这是在Order类中设置和比较weekday变量值的唯一方法。

order.setWeekDay(1);和if(order.getWeekDay()==1)都会使编译器抛出一个错误,因为试图使用integerDay类型的变量,而它们应该是WeekDay类型。

回想一下你完全忘记了的情景。

对于枚举,这不再是一个问题。如果尝试使用整数而不是工作日枚举的成员,编译器只会抛出一个错误,告诉您需要使用工作日枚举。

换言之,唯一能检查订单是否在星期五发生的是:

就如上面这样,再清楚不过了。

不再被迫记住constants类,如果有任何客户机要使用您的代码,他们不必怀疑Monday实际上是由0还是1表示的。

我希望这个例子向您展示了为什么在定义常量时应该考虑在整数上使用枚举。

枚举将使你的代码不易出错、更易于阅读和维护。

希望这篇文章能对你有帮助,记得关注哦。

相关推荐

Excel表格带单位求和不用愁!2个高效小技巧,轻松搞定!

我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!——首发于微信号:桃大喵学习记最近有小伙伴私信提问了个问题:“Excel表格数据带单位,如何快速求和?”。相信很多新手小伙...

[office] Excel中Sumproduct函数的使用方法-

Excel中Sumproduct函数的使用方法-SUMPRODUCT和SUMIFS是Excel的两个最强大的函数,用于从表中返回过滤的数据。SUMPRODUCT功能更强大,但SUMIFS更快。您可以...

SUMPRODUCT函数:关于多条件求和,不仅仅是SUMIFS,我也行!

文章最后有彩蛋!好礼相送!SUMPRODUCT函数,作为excel函数公式中的常用功能之一,运用及其广泛。结合它能够处理数据的功能,函数哥将它称之为多条件求和的函数,你可能有疑问了。SUMIF和SUM...

Excel函数公式大全之利用MMULT函数计算两个数组矩阵的乘积

各位Excel天天学的小伙伴们大家好,欢迎收看Excel天天学出品的excel2019函数公式大全课程。今天我们依旧要学习的是Excel函数中的数学函数MMULT函数,计算两个数组的矩阵乘积。今天这个...

Excel中的这个“万能函数”你用过吗?一个顶四个,简单又实用

Hello,大家好,今天跟大家分享一个Excel中的最强大的求和函数,它就是——SUMPRODUCT函数,很多人都将其称之为“万能函数”,条件求和,条件计数等一些常用的功能他就能轻松搞定,逻辑也非常的...

根据关键字条件求和,SUMPRODUCT函数思路清晰!

1职场实例小伙伴们大家好,今天我们来讲解一个关于根据关键字进行条件求和的职场真实案例,这是公众号粉丝后台留言咨询的一个问题,下面我们来通过几组简单的数据还原一下真实的办公情景。如下图所示:A列为一列地...

Excel-万能PRODUCT函数

sumproduct除了可以计算乘积之和,还可以实现单条件求和(代替sumif),多条件求和(代替sumifs),单条件计数(代替countif),多条件计数(代替countifs)我总结了一个通用的...

Excel“王者”级求和函数SUMPRODUCT,职场必学!

我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!日常工作中我们经常需要对Excel数据求和、计数,今天就跟大家分享一下Excel“王者”级求和函数SUMPRODUCT,灵...

SUMPRODUCT函数满足“或”的要求,实现多条件求和!

1职场实例小伙伴们大家好,今天我们来继续讲解Excel使用中非常实用且强大的函数:SUMPRODUCT函数,上一次我们讲到了SUMPRODUCT函数实现类似SUMIFS函数多条件求和的功能。而今天我们...

整列数据相乘再相加sumproduct函数#excel技巧

今天分享一下像这种表格,我想求它的消费,也就是用它的数量去乘以单价去加上。下一个的数量乘以单价要加上,下一个数量乘以单价。如果小白会这样一步一步的去算,去单价去乘以数量,然后加上单价去乘以数量,一个一...

双向多条件求和,sumifs彻底不行了,但是sumproduct却能轻松搞定

今天我们来解决一个困扰很多Excel新手的问题,它就双向求和,所谓的双向,就是两个方向,如下图所示,我们想要根据【项目】与【费用类别】来实现动态求和效果。【项目】与【费用类别】在数据源中,一个是纵横的...

Excel函数之Sumproduct,7个经典用法,你真的都了解吗?

什么是sumproduct函数以及其基本操作原理?sumproduct函数主要用于对数组中的数值进行相乘后再求和,。该函数最多支持255个参数(数组),这些数组可以是数字单元格引用或区域。它的工作流程...

WPS-Excel表格sumproduct函数一次性算出相乘相加总额

excel表格单纯相加或者相乘大家都会应用,但是有时候我们需要算出相乘相加的总额,这种计算也是可以一次性算出的。今天来教大家怎样在WPS表格中,让数据一次性算出相乘相加的总额,会了这个小技巧,会方便很...

大神级Sumproduct公式这么好用,1分钟学会!

在工作中,一般用不到Sumprodct函数公式,但是真的好用,我们举工作中的3个场景来说明。1、快速相乘相加如下所示,我们各种商品有一个单价,然后对应有一些数量,我们现在需要快速汇总总金额数据有没有小...

万能函数Sumproduct,除了求和和计数外,还可以排名

在众多的Excel函数中,能同时完成求和、计数以及排名功能的函数不多,其中Sumproduct就是其中一个。一、万能函数Sumproduct:功能及语法结构。功能:返回相应区域数组乘积的和。语法结...