【Java笔试题】有关基本类型的比较

导读:本篇文章讲解 【Java笔试题】有关基本类型的比较,文章出自:https://blog.csdn.net/weixin_43316702/article/details/108320467希望对大家有帮助,欢迎收藏,转发!站点地址:www.javazhiyin.com.com

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

在牛客刷题时遇到这样的一个问题:
针对以下代码,哪些选项执行后是true的:()
class CompareReference{
public static void main(String [] args){
float f=42.0f;
float f1[]=new float[2];
float f2[]=new float[2];
float[] f3=f1;
long x=42;
f1[0]=42.0f;
}
}
A. f1 == f2
B. x == f1[0]
C. f1 == f3
D. f2 == f1[1]
答案:BC(我只选择了C)

在这里的话主要是数据基本类型的比较,基本类型之间的比较,应该会将低精度类型自动转为高精度类型再比较
在这里插入图片描述

转换原则:从低精度向高精度转换byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

回到本题目, x == f1[0],x为long类型,f1[0]为float类型,比较时低精度会自动往高精度转换,则x会变成float类型,然后比较就是相等的!

数据类型取值范围
整型
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1);
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) ;
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) ;
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1);

浮点型
float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节 ;
double 1.797693e+308~ 4.9000000e-324 占用8个字节 ;