1.1强制类型转化
在Java中我们常碰到在下图中从右到左的类型转化,这时我们就要使用到强制类型转换了。
强制类型转换的语法格式是:(targetType)value,强制类型的转换的运算符是圆括号(())。
注意:因为当把一个表数范围大的量或者数值赋给一个表数范围小的变量时往往会引起溢出,从而造成数据丢失,这种转换也被成为“缩小转换”。
1.2举例
public class javaLesson8
public static void main(String[] args)
int a = 233;
//强制把一个int类型的值转换成byte类型的值
byte b = (byte)a;
//将会显示:-23
System.out.println( b );
double c = 3.29;
int d = (int)c;
//显示结果为:3
System.out.println( d );
}
我们在上面的例子中就看到程序在类型转换的过程中发生了数据丢失的现象。
这里要说明两点:
①当把一个浮点数强制类型转换为整数时,Java将直接截断浮点数的小数部分。
②当把一个整数类型转换为byte型整数时,转换过程为

强制转换为8位的byte类型,需要截断前面24位,只保留右边8位,此处走左边的1是一个符号位,此处表明这时一个负数,负数在计算机是以补吗的形式存在的,因此还需要转换成源码。
过程如下:
最后的二进制原码为10010111,这个byte型的值为-(16+4+2+1),也就是-23。
提示:①所有数字在计算机底层都是以2进制形式存在的,原码就是直接将一个10进制数换算成2进制数。
②计算机以补码的形式保存所有的正数。
③正数的补码和原码完全相同。
④负数的补码是其反码加一,反码是通过原码按位取反得到的。
⑤最高位为符号位,保持不变。
1.3字符串和基本类型的转换
一般情况下,字符串是不能直接转换为基本类型的,但是可以通过基本类型对应的包装类实现字符串转换成基本数据类型。如下
public class javaLesson9
public static void main(String[] args)
String a = "45";
int b = Integer.parseInt( a );
//将显示结果为:45 此处的45已经转换成int型
System.out.println( b );
}
Java为8中基本类型转换提供了对应的包装类:boolean对应Boolean、byte对应Byte、short对应Short、int对应Integer、long对应Long、char对应Character、float对应Float、double对应Double,8个包装类都提供了一个parseXxx(String str)的静态方法用于将字符串转换成基本类型。如举例中的红字。
好了,我们今天就学到这里,明天继续学习,每天进步一点点,Java编程如此轻松。