Java 读书笔记 (五) 目标数据类型转换
2017-12-22 09:33 钱先生 阅读(201) 评论(0) 编辑 收藏 举报数据类型转换必须满足如下规则:
- 不能对boolean类型进行类型转换
- 不能把对象类型转换成不相关类的对象 //那不同类的对象可以用同一个名字命名吗?根据作用域原则,可以吧?
- 把容量大的转换为容量小的类型时必须使用强制类型转换 //怎么操作?
- 转换过程中可能导致溢出或损失精度 //具体影响会是怎样的,尤其是金融行业?怎么处理?
- 浮点数到整数的转换是通过舍弃小数得到,不是四舍五入
自动类型转换
转换前的数据类型的位数要低于转换后的数据类型。
1 public class ZiDongLeiZhuan{ 2 public static voi main (String [] args){ 3 char c1="a"; //定义 一个char类型 4 int i1=c1; //char自动类型转换为int 5 Ssystem.out.println("char自动类型转换为int后的值等于"+i1); 6 char c2="A"; //定义一个char类型 7 int i2=c2+1; //char类型和int类型计算 8 System.out.println ("char类型和int计算后的值等于"+i2); 9 } 10 }
// 运行结果: char自动类型转换为int后的值等于97
// char类型和int计算后的值等于66
//解析: c1的值为字符"a",查ascii码表可知对应的int类型值为97,"A"对应值为65, 所以i2=65+1=66.
强制类型转换
- 条件是转换的数据类型必须是兼容的
- 格式 :(type) value type是要强制类型转换后的数据类型
1 public class QiangZhiZhuanHuan{ 2 public static void main (String [] args){ 3 int i1=123; 4 byte b=(byte)i1; //强制类型转换为byte 5 System.out.println("int 强制类型转换为byte后的值等于"+b); 6 } 7 } 8 9 10 //运行结果: int强制类型转换为byte后的值等于123
隐含强制类型转换
- 整数的默认类型是int
- 浮点型不存在这种情况,因为在定义float类型时必须在数字后面跟上F或者f
还是不明白什么是自动类型转换,什么是强制类型转换。 特定类型之间的转换是自动的,另一部分之间转换是强制的?