字节与整数比较不起作用

时间:2017-01-03 16:55:24

标签: android ternary-operator

我有简单的代码片段

getMarkerCode() == -1 ? null : getMarker(getMarkerCode());

其中getMarkerCode()总是返回-1(字节类型)。但每次都运行getMarker(getMarkerCode())方法。

即使将条件修改为:

if(getMarkerCode() == (byte)-1)
    return null;
else
    return getMarker(getMarkerCode());

结果没有改变。怎么了?

它没有包装到Byte课程吗?

Byte.compare(byte,byte)需要SDK> = 19,但应用程序支持API级别16

2 个答案:

答案 0 :(得分:0)

Referring to this post您应该使用compareTo使用字节而不是注释中指向的@Sergey字节。你可以很容易地做到这一点,因为你正在手工和#34;你可以毫不费力地改变类型。

比字节应该像new Byte("-1")

那样被解释
new Byte("-1").compareTo(getMarkerCode()) == 0 ? null : getMarker(getMarkerCode());

结果是:

Returns           | Meaning
--------------------------------------------------------------------
0                 |   if this Byte is equal to the argument Byte;
less than 0       |   if this Byte is numerically less than the argument Byte;
greater than 0    |   if this Byte is numerically greater than the argument Byte (signed comparison).

注意

从字节到字节你可以简单地投射

byte b; 
//plus instantiating
//...
Byte bObj = b;

答案 1 :(得分:0)

正如我所料,Android studio中的问题是即时运行选项。我禁用它,问题就消失了。

小心即时运行