数据类型
类型分类,存储范围,字面量,默认值,类型转换
类型分类
存储范围
数据类型 | 字节数 | 表示范围 |
---|---|---|
byte | 1 | -128~127 |
short | 2 | -32768~32767,正负3万左右 |
int | 4 | -2147483648~2147483647,正负21亿左右 |
long | 8 | -9223372036854775808~9223372036854775807, |
float | 4 | 1.4E-45~3.4028235E38,可以容纳long |
double | 8 | 4.9E-324~1.7976931348623157E308 |
char | 2 | 0~65535,无符号整数 |
引用类型 | 4 | int类型 |
boolean | 4或1 | 单独使用为4B,数组使用1个元素占1B |
字面量
- 在程序中书写的量称为字面量(整数、小数、字符等)
- 在程序中书写的整数默认是int类型
- 在程序中书写的小数默认是double类型
- 在程序当中书写的整数都是int类型,只要不超过(byte、short、char)的范围,可以进行自动转换,而不需要强制转换
默认值
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘u0000’(数值0) |
boolean | false |
引用类型 | null |
类型转换
防止溢出
浮点数和整数的表示方式不同
- 类型提升:低存储范围类型->高存储范围类型提升,目的是为了防止溢出(存储空间装不下)。因此,记住每种数据类型存储范围是有必要的,如果可能超过现有数据类型存储范围,请进行类型提升。例如,
long a=21000000000L*12
,int的存储范围大约为-21亿到+21亿 - 类型降低(强制转换):高存储范围类型->低存储范围类型提升。例如,
int i = (int)6.718
- 补充:java中long虽然存储空间有8bytes,float存储空间为4bytes,但是float的表示范围>long的表示范围,因为,浮点数的计算机存储机制导致
- 补充:java中char类型本质上是无符号整数类型,占用2个字节,存储范围0到65535。
代码
package com.xcrj.typeme;import java.util.Date;public class DataType {public static void main(String[] args) {//整数byte abyte=127;System.out.println(abyte);short ashort=300;System.out.println(ashort);int aint=333;System.out.println(aint);long along=3333;System.out.println(along);//浮点数float afloat=30.1f;System.out.println(afloat);double adouble=30.2;System.out.println(adouble);//字符char achar='e';System.out.println(achar);//布尔boolean aboolean=true;System.out.println(aboolean);//StringString aString="abc";System.out.println(aString);//时间Date aDate=new Date();System.out.println(aDate);//数组int[] aintarr=new int[3];aintarr[0]=1;aintarr[1]=2;aintarr[2]=3;System.out.println(aintarr);int[] bintarr=new int[]{1,2,3};System.out.println(bintarr);}
}