Java数据类型
Java基本数据类型分为两大类:内置数据类型和引用数据类型。
内置数据类型
byte
默认值是0,范围是-128~127,占1个字节,是有符号的二进制补码整数。
short
默认值是0,范围是-2^15~2^15-1,占2个字节,是有符号的二进制补码整数。
int
默认值是0,范围是-2^31~2^31-1,占4个字节,是有符号的二进制补码整数。
long
默认值是0L,范围是-2^63~2^63-1,占8个字节,是有符号的二进制补码整数。
float
默认值是0.0f,占4个字节,是单精度的符合IEEE754标准的浮点数。
最高位为符号位,接着8位阶码,剩下23位为底数。
double
默认值是0.0d,占8个字节,是双精度的符合IEEE754标准的浮点数。
最高位为符号位,接着11位阶码,剩下52位为底数。
boolean
只有true和false两种取值,占1位,默认值是false。
char
默认值是\u0000,范围是\u0000~\uffff,是16位的Unicode字符,可以存储任何字符。
说明:
1、一般地,整型变量默认位int类型,浮点数默认为double类型。
2、如果要声明为float类型,如果是整型则不变,如果是浮点数必须在值后面加f,大小写均可。
3、声明为long类型,可以加后缀字母l或L,为了方便分辨建议使用L。
4、不能对一个内置数据类型赋予一个超出范围的值。
5、在整型赋值时,可以使用十进制、八进制和十六进制,前缀0表示和前缀0x表示八进制和十六进制。
6、对一个char类型赋值时,可以是'\u0001'
类型转换
类型转换分为自动转换和强制转换,能够自动转换的也可以强制转换,但必须强制转换的不能用自动转换。
自动转换是自动地将一种类型转换为另一种类型。而强制转换必须指定转换后的类型。
1、不能对boolean类型进行类型转换
2、常见转换类型:
a、字符类型向整型的转换,char向int,long类型转换为自动转换,向byte,short转换必须是强制转换。
char ch='A'; byte a=(byte)ch; short b=(short)ch; int c=ch; long d=ch;
b、整型内部转换,byte<short<int<long,从低到高转换为自动转换,从高到低转换必须是强制转换。
c、浮点型内部转换,float<double,从低到高转换为自动转换,从高到低转换必须是强制转换。
float a=3.3f; double b=a;//b=3.299999952316284 double c=5.6; float d=(float)c;//d=5.6
d、浮点型到整数转换,是通过舍弃小数得到,float和double向byte,short,int,long转换都必须使用强制转换。
e、整型向浮点数转换,byte,short,int,long向float和double都可以自动转换。
引用数据类型
引用数据类型分为数组类型和对象类型。引用数据类型的默认值都是null。
一维数组
声明一个int类型的数组
int[] a;
初始化,必须指定元素个数。这时数组的元素的初始值为默认值。
a=new int[5];
通过数组名和下标可以访问数组元素进行赋值和读值。下标范围为0~数组大小
a[0]=2;
可以同时声明数组类型和指定数组中的元素个数
int[] a=new int[5];
也可以在创建数组的时候直接赋值
int a={1,2,3,4,5};
二维数组
声明一个char类型的二维数组
char[][] a;
在使用前必须指定数组的一维和二维大小,可以指定所有子数组的大小相等,也可以分别指定大小。
a=new char[3][5]; //或者 a=new char[3][]; a[0]=new char[1]; a[1]=new char[2]; a[2]=new char[3];
在声明数组的时候也可以同时指定子数组个数和每个子数组的元素个数
char[][] a=new char[3][]; //或者 char[][] a=new char[3][5];
赋值可以针对每个子数组进行,也可以统一进行
a[0]={'a','b'}; //或者 char[][] a={{'a','b'},{'1','2','3'}};