原始类型的变量由位组成并表示它们的值,引用变量包含描述如何获取对象的位。
要比较两个原语,请使用 == 运算符
== 运算符可用于比较任何类型的两个变量 - 它只是检查它们的位是否匹配。
表达式if (a == b) { ... }
查看内部的位a
,如果匹配则b
返回。true
int a = 3;
byte b = 3;
if (a == b ) {...}
但是它如何检查它们的位是否匹配。如果int
是 32 位和byte
8 位呢?在此示例中,a
它不应相等b
,因为int
和byte
具有不同的位
简单来说,对于原语,算子==
比较它们的值我知道,但是当我读到一本书里关于比特的时候,我什么都不懂。如果可能,请在视觉上解释,提前谢谢
如果我没有混淆任何东西,那么在比较时,会执行自动类型转换,也就是说,如果可能的话,那么两个变量都会被转换为一个公共数据类型:例如,如果有
byte b = 8
andint i = 10
,那么当它们是比较b==i
,会自动产生这样的东西:数字一般存储为一和零,即在将int i 257(000000...100000001)转换为字节i时,左侧所有多余的字节将被简单地截掉,变量i将不等于256( 111111111), 但是 (000000001)
那些。关于您的问题,将简单地为字节类型的变量自动添加零位
一般来说,要理解这个主题,你只需要阅读更多关于基本数据类型的显式和隐式转换以及它通常是如何执行的,这里有几个链接:
https://metanit.com/java/tutorial/2.2.php
将int转换为字节?