Java的基本数据类型

483 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

介绍

Java 中总共包含8种数据结构,分别是 byteshortintlongfloatdoublecharboolean

基本数据类型存储大小最小值最大值默认值
byte8位-128(27-2^7127(2712^7-10
short16位-32768(215-2^{15}32767(21512^{15} - 10
int32位-2,147,483,648(231-2^{31}2,147,483,647(23112^{31} - 10
long64位-9,223,372,036,854,775,808 (263-2^{63}9,223,372,036,854,775,807(26312^{63} -10L
float32位--0.0f
double64位--0.0d
char16位\u0000(即 0)\uffff(即 65535)\u0000
boolean1位falsetruefalse

基本数据类型间的转换

数字类型之间的转换

数字类型间的转换原则就是:拓宽类型时,不需要显式声明类型转换缩窄类型时,需要显示声明类型转换。拓宽类型就是从小范围数据类型到大范围数据类型转换,如从 int 类型到 long 类型,本身 int 类型的范围就比 long 类型的要小,所以就可以直接隐式的转换了。而反之就是缩窄类型,如果超过了要转换到的小范围类型的取值范围,一般都会发生精度的丢失。

数字类型与字符类型之间的转换

数字类型可以直接转换到字符类型,由于字符类型的存储大小只有16位,所以转换时只会使用低16位。若是浮点数类型则只将整数部分转换成字符类型。

char a = 97;
// a 的值是 'a'

字符类型转到数字类型也可以直接转换,会将字符的统一码转换成指定的数值类型。但若这个值超过了要转换到的数据类型的取值范围,则需要显式的声明类型转换。

int a = 'a'
// a 的值是 97,即字符 a 的ASCII码

基本数据类型的包装类

Java中为每个基本数据类型都提供了一个包装类

byte → Byte、short → Short、int → Integer、long → Long、float → Float、double → Double、char → Character、boolean → Boolean

这么做是为了解决基本数据类型并不是面向对象的问题。

各位也无需去记住上面表格中每种基本数据类型的取值范围,它们对应的值都在对应的包装类中能找到,如

System.out.println("int 的存储位数:" + Integer.SIZE);
System.out.println("int 的最小值:" + Integer.MIN_VALUE);
System.out.println("int 的最大值:" + Integer.MAX_VALUE);

结果为

int 的存储位数:32
int 的最小值:-2147483648
int 的最大值:2147483647

在算法题解中Integer.MIN_VALUE等我们也是经常能看见。

总结

基本的数据类型其实所有语言都差不多,最重要的就是掌握好数据类型的相互转换,了解各个数据类型的取值范围差异