Java的数据类型分为三大类,即布尔型、字符型和数值型,其中数值型又分为整型和浮点型。相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型 float、 double。其中四种整型变量分别对应于不同的精度和范围。此外,编程时还经常用到两种类变量,即String和Date。
字符型中的char是16bit,即一个可以存储一个字符。其实从理论上有2byte(16bit)可以存储两个字符,但是真正的有只能以ASCII编码中的两个字符,也就是说只能是数字和英语字符等等,不能表示到其他国家的语言中某个字符,所以Java从普遍性来考虑的话,用Unicode来储存的话,只能储存一个字符(16bit)。
整型中byte、short、int、long数据类型,从小到大,分别是8bit,16bit,32bit,64bit,只能来表示数字而已,当然如果有英语字母也是可以的,输出的时候就输出了该字母在ASCII中编码大小的十进制,而不是输出英文字母本身,因为整型本身就是来储存数字的。
浮点型更容易了,是用来表示有小数点的数字的,不过他们的精度不同,float是32bit,而double是64bit。一般的话,float是够用了,不过数据的小数点后的位数过多可以用double,保证精度的准确。
简单数据类型之间的转换
1.自动类型的转换
低精度的数据类型可以自动转换为高精度的数据类型,低精度意味着bit位数小,放入bit位数大的高精度数据类型肯定是可以啦。就像是在1L水杯里面的水在从1L的水杯里倒到2L的水杯里是没事的,不会有精度溢出的
2.强制类型的转换
高精度的转换为低精度的,要强制,因为2L水杯里面的水从2L水杯倒到1L的水杯里面去,很可能精度溢出。当然,也不一定会溢出的,因为可能2L水杯里面装着0.9L的水,倒到1L的水杯里面去,当然没事了,不过最好不要这样子做,一般会导致溢出或者精度下降。
3.包装类过度类型的转换
Java的包装类就是可以直接将简单类型的变量表示为一个类。Java共有六个包装类,分别是Boolean,Character,Integer,Long,Float和Double,明显的对应着boolean,char,int,long,float和double。而String和Date本身就是类,不存在包装类的概念。