繁体   English   中英

合并整数常量在Android中如何工作?

[英]How does combining integer constants work in Android?

我在Android中将一堆常量组合在一起。

例如,A = 1,B = 2,C = 3

然后,我使用一个名为setParams(A | B | C)的函数。

Java将其转换为一个最终的int值,例如X。

如果我只能访问整数常量的最终组合值,如何从组合值X中获得单个值?

除非有特定的规则来控制分解,否则您不能这样做。

在您的情况下,由于CA | B相同A | B A | B ,你不能说。

但是,如果ABC分别为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM