当前位置: 首页 > 面试题库 >

在没有If语句的情况下将Java中的布尔值转换为整数

周龙光
2023-03-14
问题内容

我想知道是否有一种方法可以将布尔值转换为int而不使用if语句(以免破坏管道)。例如,我可以写

int boolToInt( boolean b ){
  if ( b )
    return 1
  return 0

但是我想知道是否有一种方法可以不使用if语句,例如Python的

bool = True 
num = 1 * ( bool )

我也觉得你可以做

boolean bool = True;
int myint = Boolean.valueOf( bool ).compareTo( false );

但是,这会创建一个额外的对象,因此它确实很浪费,而且我发现它比if语句方式还要慢(它不一定效率低下,只是有一个弱点)。


问题答案:

除了if外,不能使用布尔值。但是,这并不意味着在装配级别将有一个分支。

如果检查该方法的编译代码(顺便说一句,使用return b ? 1 : 0;完全相同的指令进行编译),您将看到它不使用跳转:

0x0000000002672580: sub    $0x18,%rsp
0x0000000002672587: mov    %rbp,0x10(%rsp)    ;*synchronization entry
0x000000000267258c: mov    %edx,%eax
0x000000000267258e: add    $0x10,%rsp
0x0000000002672592: pop    %rbp
0x0000000002672593: test   %eax,-0x2542599(%rip)        # 0x0000000000130000
                                                ;   {poll_return}
0x00000000025b2599: retq

注意:这是在热点服务器7上-在不同的VM上可能会得到不同的结果。



 类似资料:
  • 今天我得到了一个关于代码的评论,考虑到我在学校作业中检查变量是真还是假的方式。 我编写的代码如下所示: 他们说这样写更好/更整洁: 例如,0和1不应该在该变量中。

  • PHP是否有任何内置函数可以接受布尔值并返回其整数等效值?0代表FALSE,1代表TRUE?当然,您可以轻松创建一个函数来做到这一点,我只是询问PHP内部是否有内置函数。我已经尝试了并将其转换为但它们不起作用,它们在TRUE和FALSE两种情况下都返回0。 编辑:问题是它不是真正的布尔值,而是一个字符串“false”、“true”,php没有检测到传递布尔值的jquery帖子。问题解决了,谢谢!

  • 我知道在 C 和 C 中,当将布尔转换为整数时, 和。我想知道向相反方向投射... 在下面的代码中,以下所有断言在使用 Visual Studio 2013 和 Keil μVision 5 编译的 .c 文件中都适用。注意 。 关于将非零、非一整数转换为布尔值,C和C标准有何规定?是否指定了此行为?请包括引文。 对于任何C编译器,我可以假设(bool)true == (int)1不是重复的吗?

  • 我正在上一门Java课程,我们还没有正式学习if语句。我在学习,看到了这个问题:

  • 问题内容: 在Java中将a转换boolean为an 的最常用方法是什么int? 问题答案: ^^ PS : true = 1 and false = 0