Java语言是强类型(strongly typed)语言,强类型语言可以在编译时进行严格的语法检查,从而减少编程错误。数据类型分为两类:基本类型(Primitive Type) 和引用类型(Reference Type)。
基本类型包括boolean类型和数值类型。数值类型有整数类型和浮点类型。整数类型包括 byte、short、int、long、char,浮点类型包括float和double.
引用类型包括类、接口和数组类型,还有一种特殊的null类型。引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量相当于一个指针,但引用类型只能赋值运算。
一、基本数据类型
值得注意的是字符串不是基本数据类型,字符串是一个类,也就是引用数据类型。
1、布尔型
-----boolean,boolean 类型所占存储空间的大小没有明确指定,其取值为true或false,其默认值为false。
2、字节型
----byte,byte 类型所占存储空间大小为1个字节,其取值为-128——127,其默认值为0。
3、整型-
-----int,int类型所占存储空间大小为4个字节,其取值为-2^31——2^31-1,其默认值为0。
4、短整型
-----short,short类型所占存储空间大小为2个字节,其取值为-2^15——2^15-1,其默认值为0。
5、长整型
-----long,long类型所占存储空间大小为8个字节,其取值为-2^63——2^63-1,其默认值为0。
6、字符型
-----char,char类型所占存储空间大小为2个字节,其默认值为\u0000。
7、单精度浮点型
-----float,float类型所占存储空间大小为4个字节,其取值为-2^128——2^128,其默认值为0.0F。
8、双精度浮点型
-----double,double类型所占存储空间大小为8个字节,其取值为-2^1024——2^1024,其默认值为0.0D。
二、基本类型的类型转换
1、自动类型转换
1)byte-->short-->int-->long-->float-->double ,小精度可转大精度,大转小会失去精度。
public class AutoConversion
public static void main(String[] args)
int a = 6;
//int可以自动转换为float类型
float f=a;
//下面将输出6.0
System.out.println(f);
//定义一个byte类型的整数变量
byte b=9;
//下面代码将出错,byte型不能自动转换为char型
//char c = b;
//下面是byte型变量可以自动转换为double型
double d = b;
//下面将输出9.0
System.out.println(d);
}
2)
public class PrimitiveAndString
public static void main(String[] args)
//一个基本类型值和字符串进行连接运算时,基本类型值自动转换为字符串
String str2= 3.5f+"";
System.out.println(str2);
}
2、强制类型转化
当我们需要将数值范围较大的数值类型赋给数值范围较小的数值类型变量时,由于此时可能会丢失精度,因此,需要人为进行转换。我们称之为强制类型转换。
public class NarrowConversion
public static void main(String[] args)
double dValue = 3.98;
//强制把一个double类型的值转换为int
int t = (int)dValue;
//将输出3
System.out.println(t);
}
3、表达式类型的自动提升
当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升
//定义一个short类型变量
short sValue = 5;
//表达式中的sValue将自动提升到int类型,则右边的表达式结果类型为int
//将一个int类型赋给short类型的变量将发生错误。
sValue = sValue - 2;