基本数据类型
说明:
- byte类型的取值范围是-128到127。
- long类型的数值需要
l
或L
结尾。 - float类型的数值需要
f
或F
结尾。 - float取值范围比long大,并且可以精确到7位有效数字。
- double的精确有效位数是float的两倍,能精确到16位有效数字。
参考代码:
byte by = 127;
short st = 32767;
int it = 365555555;
long lg = 3655555555555555555L;
float ft = 3.00000014F;
System.out.println(ft); //输出3.0000002
double db = 3.000000000014159267;
System.out.println(db); //输出3.0000000000141593
char ch = '3';
boolean bln = true;
注意:
- 整型常量默认是int类型,比如:5。
- 浮点型常量默认是double类型,比如:3.14。
- 字符使用一对
''
,单引号内只能有一个字符,并且不能嵌套使用。
扩展:float占4个字节,为什么取值比int和long都大?
因为在整型中,一个字节就是一个数值,而浮点数中一个字节是一个范围。
基本数据类型转换
自动转换(隐式)
自动类型转换:取值范围小的类型自动转换为取值范围大的数据类型。
数据类型取值范围大小排序为:
注意:
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换为取值范围最大的那个数据类型,然后再进行计算。
- byte、short、char之间不会相互转换,他们三者在计算时首先转换为int类型。
- boolean类型不能与其它数据类型运算。
- 当把任何基本数据类型的值和字符串进行连接运算时(+),基本数据类型的值自动转换为字符串类型拼接。
示例:
int a = 3;
long b = 10L;
long c = a + b;
若c换成int类型,则会提示错误,与预期不符,若要c为int类型,可以将b强制转换为int类型。
强制转换(显式)
自动类型转换的逆过程,将取值范围大的数据类型转换为取值范围小的数据类型,使用时要加上强制转换符()
,但可能造成精度降低或溢出,格外要注意。
示例:
int a = 3;
long b = 10L;
int c = a + (int) b;
注意:字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现字符串转换成基本类型。(后面文章会讲述包装类,这里不懂可以跳过)
String a = "43";
int i = Integer.parseInt(a);
布尔类型不可以转换为其他数据类型。
引用数据类型
我们要知道的是除了八种基本数据类型以外的类型都是引用数据类型,例如:类(Class)、接口(interface)、对象(Object)、数组(Array)、枚举(Enum)等等,这里不强调太多,后面都会说到。