[英]How does combining integer constants work in Android?
我在Android中将一堆常量组合在一起。
例如,A = 1,B = 2,C = 3
然后,我使用一个名为setParams(A | B | C)的函数。
Java将其转换为一个最终的int值,例如X。
如果我只能访问整数常量的最终组合值,如何从组合值X中获得单个值?
除非有特定的规则来控制分解,否则您不能这样做。
在您的情况下,由于C
与A | B
相同A | B
A | B
,你不能说。
但是,如果A
, B
和C
分别为1、2和4(您能看到模式吗?),则可以使用按位算术从X
提取成分。 实际上,这样做很普遍。
我想知道为什么认为Java“必须”跟踪事物。 为什么会这样呢?
关键是:如果您在源代码中使用变量,那么那些变量当然会在其范围内,例如:
void foo() {
int a=5, b=3;
int c = a * b;
do something else with a and b
return c;
当然,即使在计算了c之后,a和b仍然“存在”,并且可以检查它们的值。 但是一旦方法返回,关于a,b和c的任何知识都将消失。 然后,唯一的“ left”是方法返回的int值15。
(仅作记录:在上面的示例中,编译器将进行常量折叠 ,并且在该方法的字节码中,您甚至都找不到a,b,c。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.