Java基本数据类型中的细节问题

【本文参考自《Java程序员面试笔试宝典》】

【Java基本数据类型】Java语言一共提供了8种基本数据类型:byte、short、int、long、float、double、char、boolean。这些基本类型的数据变量在声明之后就会立刻在栈上被分配内存空间。除了这8种基本数据类型外,其他类型都是引用类型,它们以特殊的方法指向对象实体,这类变量在声明时不会被分配内存空间,知识存储了一个内存地址而已。

【8种基本数据类型的对比】

基本数据类型 字节长度 范围 默认值 包装类
byte 1

[-128,127]

[-2^7,2^7-1]

0 Byte
short 2

[-32768,32767]

[-2^15,2^15-1]

0 Short
int 4

[-2147483648,2147483647]

[-2^31,2^31-1]

0 Integer
long 8

[-9223372036854775808,9223372036854775807]

[-2^63,2^63-1]

0L或0l Long
float 4 32位IEEE 754单精度范围 0.0F或0.0f Float
double 8 64位IEEE 754双精度范围 0.0 Double
char 2 Unicode [0,65535] u0000 Character
boolean 1 true和false false

Boolean

【注】Java中的数据类型都是有符号的,不存在无符号的数,它们的取值范围也是固定的,不会随着硬件环境或操作系统的改变而改变。在Java语言中,默认声明的小数是double类型的,因此在对float类型的变量进行初始化时需要进行类型转换。类似地,直接写的整型数字是int类型的,如果在给数据类型为long的变量直接赋值时,也需要进行类型转换。

【隐式数据类型转换】在java语言中,当参与运算的两个变量的数据类型不同时,就需要进行隐式的数据类型转换。转换的规则为:从低精度向高精度转换,即优先级满足byte<short<char<int<long<float<double。但是基本数据类型与boolean类型是不能相互转换的。

【强制类型转换】当需要从高级数据类型转换为低级数据类型时,就需要进行强制类型转换,但是需要注意的是,在强制类型转换后,可能会损失精度。强制类型转换的规则如下:

原操作数类型 转换后操作数类型
byte char
char byte,char
short byte,char
int byte,char,short
long byte,char,short,int
float byte,char,short,int,long
double byte,char,short,int,long,float,double
【注】在涉及byte、short和char类型的运算时,首先会把这些类型的变量值强制转换为int类型,然后对int类型的值进行计算,最后得到的值也是int类型的。

猜你喜欢

转载自blog.csdn.net/weixin_36378917/article/details/80679547