首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Java中的布尔值只接受true或false?为什么不也是1或0呢?

为什么Java中的布尔值只接受true或false?为什么不也是1或0呢?
EN

Stack Overflow用户
提问于 2010-01-07 01:58:44
回答 7查看 116.2K关注 0票数 56

为什么Java booleans只接受truefalse,为什么不接受10呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-01-07 02:00:49

与C和C++等语言不同,Java将boolean视为完全独立的数据类型,它有两个截然不同的值: true和false。值1和0的类型为int,并且不能隐式转换为boolean

票数 60
EN

Stack Overflow用户

发布于 2010-01-07 02:00:41

因为布尔值有两个值:truefalse。请注意,这些不是字符串,而是实际的布尔值。

1和0是整数,没有理由将它们设置为"alternative true“和"alternative false”(或者将Unix退出代码设为“alternative true”和“alternative false”,从而混淆它们。)在Java中使用强类型时,应该只有两个原始布尔值。

编辑:请注意,如果您需要,可以很容易地编写转换函数:

代码语言:javascript
运行
复制
public static boolean intToBool(int input)
{
   if (input < 0 || input > 1)
   {
      throw new IllegalArgumentException("input must be 0 or 1");
   }

   // Note we designate 1 as true and 0 as false though some may disagree
   return input == 1;
}

虽然我不推荐这样做。请注意,您不能保证int变量真的是0或1;并且没有100%明显的语义来表示真。另一方面,boolean变量总是 truefalse,很明显哪个变量的意思是真。:-)

因此,不要使用转换函数,而要习惯于将boolean变量用于表示真/假概念的所有内容。如果您必须使用某种原始文本字符串(例如,用于存储在平面文件中),"true“和"false”的含义要清晰得多,库方法Boolean.valueOf可以立即将它们转换为布尔值。

票数 32
EN

Stack Overflow用户

发布于 2010-01-07 02:00:58

因为创建Java的人希望boolean表示明确的真或假,而不是1或0。

关于1和0如何转换为布尔值,各语言之间没有达成共识。C使用任何非零值表示true,使用0表示false,但有些UNIX shell的情况正好相反。使用int会削弱类型检查,因为编译器无法防止传入的int值不应该在布尔上下文中使用的情况。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2015071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档