第一部分:类型转换
1.自动类型转换
如果系统支持把某种基本类型的值直接赋给另一个基本类型的变量,则这种方式被称为自动类型转换。当把一个范围小的数值或者变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换。
例 : int a=6;
float f=a;
System.out.println(f);
上述代码中int类型转换为了float类型,故输出的应是6.0;
而以下代码:
byte b=9;
char c=b;
double d=b;
System.out.println(d);
将会报错,错误解释为byte类型不能转换为char类型。(问题)
当把任何基本类型的值和字符串进行连接运算时,基本类型 的值将自动类型转换为字符串类型,虽然字符串类型不是基本类型,而是引用类型。因此,如果希望把基本类型的值转换为对应的字符串时,可以把基本类型的值和一个空字符串进行连接。
应当注意的是,自动类型转换时表数范围小的可以向表数范围大的进行,就如同两瓶水,把小瓶里的水倒入大瓶中不会有任何问题。(自动类型转换图)
2、强制类型转换
由上结合名称可知,就是类似于将大瓶子里的水倒入一个小瓶子里,如果大瓶子里的水不多还好,如果太多,将会引起数据溢出,从而造成数据丢失。
java7中新增的二进制整数
所有数字在计算机底层都是以二进制的形式存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有的整数。补码的计算规则是:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。值得注意的是最高位是符号位当其为1时表明他是一个负数 ,负数在计算机里是以补码的形式存在的,因此在计算时需要换算成原码。
浮点型 :java的浮点类型有两种:float 和double,但默认类型是double,如果希望java把一个数当成float类型处理应该在这个浮点类型值后加上f或者F。
除此之外java还提供了3个特殊的浮点值:正无穷大、负无穷大和非数,用于表示溢出或者出错。例如 使用一个正数(浮点型后同,整数值会报错)除以0会得到正无穷大,负则同理。0.0除以0.0得到NaN。