Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中如何组合整数常量?_Java_Android_Constants - Fatal编程技术网

Java 在Android中如何组合整数常量?

Java 在Android中如何组合整数常量?,java,android,constants,Java,Android,Constants,我在Android中将一组常量组合在一起 例如,A=1,B=2,C=3 然后我使用一个名为setParams(a | B | C)的函数 Java将其转换为一个最终的int值,比如X 如果我只能访问整型常量的最终组合值,那么如何从组合值X中获取单个值 除非有特定的规则来管理分解,否则不能这样做 在您的情况下,由于C与A | B相同,您无法判断 但是,如果A、B和C分别为1、2和4(您能看到模式吗?),则可以使用位运算从X中提取成分。事实上,这样做是很常见的。除非有特定的规则来管理分解,否则不能这

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

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

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

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


如果我只能访问整型常量的最终组合值,那么如何从组合值X中获取单个值

除非有特定的规则来管理分解,否则不能这样做

在您的情况下,由于
C
A | B
相同,您无法判断


但是,如果
A
B
C
分别为1、2和4(您能看到模式吗?),则可以使用位运算从
X
中提取成分。事实上,这样做是很常见的。

除非有特定的规则来管理分解,否则不能这样做

在您的情况下,由于
C
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的任何知识都将消失。那么唯一剩下的是该方法返回的int值15


(顺便说一句:在上面的例子中,编译器会进行常量折叠,在该方法的字节码中,你甚至找不到a、b、c了。

我想知道为什么认为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的任何知识都消失了。然后唯一“剩下”的就是方法返回的int值15


(顺便说一句:在上面的例子中,编译器会进行常量折叠,在该方法的字节码中,你甚至找不到a、b、c了。

你能发布一些代码吗,如果你使用的是数学运算,你在这里做什么是非常不清楚的(你没有指定你在做什么)这是不可能的,因为数字有许多不同的可能性。例如:A*B的结果是2。A可以是1或2,但你永远不会知道sure@Michael因此,我假设Java有某种内部方式来识别组合值是什么,对吗?@Kyle是的,但那是不正确的。为什么你想用这种方法来解决这个问题吗?如果你显式地将变量传递给方法,为什么不把它存储在一个临时的局部变量中,以便以后可以访问它呢?你能发布一些代码吗?如果你在使用数学运算(你没有指定你在做什么),你在这里做什么是非常不清楚的这是不可能的,因为数字有许多不同的可能性。例如:A*B的结果是2。A可以是1或2,但你永远不会知道sure@Michael因此,我假设Java有某种内部方式来识别组合值是什么,对吗?@Kyle是的,但那是不正确的。为什么你想用这种方法来解决这个问题吗?如果你显式地将变量传递给方法,为什么不把它存储在一个临时的局部变量中,以便以后可以访问它呢?你的意思是只有Java知道它是如何组合的,但我们不知道组合的int常量的组成是什么?@Kyle:当然。@Bathsheba它仍然不可能我们无法确定结果是如何产生的。例如,给定A=1,B=2,C=4,那么A | B | C是7。所以现在我们要问:给定一个由X | Y | Z产生的值7,X,Y和Z是什么?一个可能的答案是(1,2,4),但是(1,1,6)也可能是答案。@FredK,确实是这样。但是如果你知道成分的值(部分“特定规则”),它们是“按位排他的”(如果你明白我的意思的话),然后你可以推断成分。这是因为线性代数太多,编程太少,所以你的意思是只有Java知道它是如何组合的,但我们不知道组合的int常量的组合是什么?@Kyle:绝对。@Bathsheba仍然无法确定结果是如何创建的。例如,给定A=1,B=2,C=4,那么A | B | C就是7。现在我们问:给定一个由X | Y | Z创建的值7,X、Y和Z是什么?一个可能的答案是(1,2,4),但是(1,1,6)也可能是答案。@FredK,确实是这样。但是如果你知道成分的值(“特定规则”的一部分),它们是“按位排他”(如果你明白我的意思的话),然后你就可以推导出成分。这是对线性代数太多而编程太少了