一个 int 值,只能表示一个数值吗?

正常情况下一个 int 就是代表一个数值,或者一种状态。但是Google和Oracle的工程师似乎特别喜欢用1个 int 类型来表示多种状态,源码中到处都能看到这种使用方式。

线程池

ThreadPoolExecutor中的 ctl

定义线程池的运行状态值:

声明用来表示线程池运行状态和线程数量的变量

设置线程池状态和线程个数

获取线程池运行状态和线程个数

Java线程池使用AtomicInteger ctl表示线程池的两种状态:

  • 运行时状态

  • 当前池中线程个数

ctl 高3位表示运行时状态,低29位表示线程个数

Java Class 修饰符

getModifiers()

定义Class的几种修饰符值

获取Class所有的修饰符:

判断Class是否被某一个修饰符修饰:

Java Class 使用一个 int 变量 modifiers 的低16位来表示它的所有修饰符

Android View

MeasureSpec

定义状态UNSPECIFIED、EXACTLY、AT_MOST,以及用于过滤的MODE_MASK。

构建MeasureSpec

从MeasureSpec中取值

Android View中的onMeasure方法有2个参数:

  • int widthMeasureSpec

  • int heightMeasureSpec

这两个int的高2位表示宽高设置模式,低30位表示宽高实际大小

实践

相亲平台择偶标准

比如实现一个相亲平台,相亲人员需要登记自己的真实情况与择偶要求。主要包含两方面信息:城市地址(只限北上广) + 名下资产。

这种情况就可以用1个int类型的变量来表示这两方面信息:高2位表示城市地址,低30位表示名下资产。

1 定义城市地址状态值:

2 定义城市、资产过滤MASK:

3 构建城市地址与名下资产情况

4 判断城市地址与名下资产情况:

思考题

文末无广告

不知道为什么,文章写到这里我脑子里突然冒出一道题,可以借此题考验自己是否熟悉"位运算"?

如何使用"位运算"实现一个整数的正反数 ?比如:

  • 输入 10,返回 -10

  • 输入 -100,返回 100

  • 输入 0,返回 0

如果你喜欢本文

长按二维码关注

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值