代码改变世界

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

还是不明白什么是自动类型转换,什么是强制类型转换。 特定类型之间的转换是自动的,另一部分之间转换是强制的?