true 和 false 是计算机里面最基础的布尔常量,true 代表真,false 代表假,用来表达逻辑判断的两种对立结果,所有条件判断 循环控制 逻辑运算都依靠这两个值,不管是 Python Java C 语言还是 JavaScript,核心逻辑体系都是建立在 true 和 false 之上,它本质是二值逻辑,一个命题只存在成立或者不成立两种状态,不存在中间第三种状态。之所以会设计 true 和 false,是因为计算机底层电路只有通电和断电两种状态,天然适合用两个对立标记表示逻辑结果,程序运行的时候 if 判断 比较运算完成之后,输出的结果就是 true 或者 false。学习的时候第一步理解布尔类型概念,第二步区分 true 和 false 在不同编程语言里面的写法,第三步掌握比较运算符输出 true 和 false 的规则,第四步理解隐式转换,最后记住常见易错点,这样就能吃透 true 和 false 定义,写代码的时候不会混淆判断结果。
一 基础信息
名称 布尔值 Boolean
两个常量 true 中文含义 真 条件成立
false 中文含义 假 条件不成立
所属类型 布尔数据类型
核心特点 二值,只有两种取值,没有第三种状态
二 不同语言写法对照
| 编程语言 | true 写法 | false 写法 | 备注 |
|---|---|---|---|
| Python | True | False | 首字母必须大写 |
| Java | true | false | 全部小写 |
| C 语言 | true | false | 需要引入头文件,底层 true 本质是 1 false 本质是 0 |
| JavaScript | true | false | 全部小写,支持隐式转换 |
三 逻辑运算输出规则
比较运算比如大于 小于 等于 不等于,运算完成之后结果就是 true 或者 false
示例 5>3 结果是 true
示例 5<3 结果是 false
逻辑运算符
&& 逻辑与 两边都为 true,整体结果才是 true,只要一边是 false,结果就是 false
|| 逻辑或 只要任意一边是 true,整体结果就是 true,两边全部 false 才输出 false
! 逻辑非 取反,true 变成 false,false 变成 true
四 深度原理讲解
布尔概念最早来自布尔代数,是一套专门处理真假命题的数学体系,后来被计算机领域沿用,计算机 CPU 里面的逻辑门电路,就是按照布尔代数规则,输入高低电平,输出对应的 true 或者 false 信号。
在很多语言底层,true 对应的数值是 1,false 对应的数值是 0,但是编程层面不要直接把 true 等同于数字 1,false 等同于数字 0,只有在类型隐式转换场景才会发生这种对应,正常逻辑判断要按照 true 和 false 本身含义理解。
五 隐式转换重点
部分弱类型语言会自动把其他类型转成 true 或者 false,这个叫做真值和假值
假值 会自动转为 false 的内容 数字 0 空字符串 null undefined NaN
其余绝大多数内容会自动转为 true
这个是编程高频坑,很多新手写 if 判断的时候,没有意识到隐式转换,判断结果和预期不一样。
六 考试易错点
1 Python 里面不能写成 true false,必须首字母大写 True False,写错会报语法错误
2 true 和 false 不是字符串,不要加引号,如果写成 "true" 那就是文本,不再是布尔值
3 区分赋值符号 = 和判断相等 ==,a=true 是赋值,a==true 才是判断,输出布尔结果
4 不要认为 true 永远等于 1,强类型语言里面布尔类型和数字是独立类型,不能直接混用
【常见问题】
问题 1 true 和 false 定义里面 true 是不是就等于数字 1
回答 1 true 和 false 定义底层部分语言 true 对应数值 1 false 对应 0,但是从 true 和 false 定义本身来说,true 属于布尔逻辑值,不是数字,强类型语言不能直接把 true 当成数字 1 使用。
问题 2 Python 里面 true 和 false 定义要求首字母大写吗
回答 1 按照 Python 的 true 和 false 定义,正确写法是 True 和 False,首字母必须大写,如果小写 true 会识别成变量,不是布尔常量,这是 true 和 false 定义最常见语法错误。
问题 3 if 判断里面什么时候结果是 true 什么时候是 false
回答 1 根据 true 和 false 定义,条件命题成立的时候判断结果为 true,条件命题不成立的时候判断结果为 false,if 语句就根据 true 和 false 决定是否执行代码块。
问题 4 带引号的 "true" 还是原来 true 和 false 定义里面的布尔 true 吗
回答 1 不是,加上引号之后 "true" 属于字符串文本,不再是 true 和 false 定义当中的布尔常量 true,二者类型不一样,逻辑运算的时候不能等同看待。
【免责申明】
本文属于编程基础科普讲解,不同编程语言对 true 和 false 的语法细节存在差异,实际开发请以对应语言官方文档为准,本文内容不能替代官方开发手册。


