• 3.27Java强制类型转换(cast)


    3.27Java强制类型转换(cast)

    举例

    将一个double类型的值转为int类型:

    实例:

    double x = 3.14;
    int nx = (int)x; //值为3
    char c = 'a';
    int d = c+1;
    System.out.println(nx);
    System.out.println(d);
    System.out.println((char)d);
    /*
    强转移可能会出现数据丢失
    */

    在数据类型转换的时候会出现的问题

    操作比较大的数的时候要留意是否溢出

    结果比表述的范围要大就发生了溢出

    不要命名名字为‘l'小写L的变量,'l'容易和1混淆。Long类型的使用也是要用大写L

    实例:

     /**
    * 测试类型转换常见的问题
    * @author Lucifer
    */
    public class TestTypeConvertError {
       public static void main(String[] args) {
           int money = 100000000; //10亿
           int years = 20;
           //返回的total是负数,超过了int的范围
           int total = money*years; //先算出后面的表达式的值,其结果超过了int的范围,再将这个结果赋给total超过了int的范围所以结果是负数
           System.out.println("total=" + total);
           //返回的total仍然是负数,默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失
           long total1 = money*years;
           /*
           虽然total1声明了是long类型,但是在计算的时候是以int类型去进行计算的,而且本身在int类型计算的时候值已经溢出
           所以在赋值给long也无用
            */
           System.out.println("total1=" + total1);
           //返回的total2正确,先将一个因子变成long,整个表达式发生提升.全部用long来计算。
           long total2 = money*((long)years);
           System.out.println("total2=" + total2);
           /*
           正确的方法是先让表达式的结果为long
           如total2,先让表达式中的一个操作数为long类型
           这样计算出来的表达式的结果也为long
           先把其中一个变量类型做提升,然后整个表达式的结果容量都会提升
            */


           //命名问题
           int l = 2; //分不清是L还是1
           long a = 23451l;
           System.out.println(l+1); //注意不要用小写L

           long total3 = 34L*2323*a*l; //保险起见在运算时就先让一个操作数变为和变量一个类型
           System.out.println(total3);
      }
    }

     

     

    It's a lonely road!!!
  • 相关阅读:
    IP地址分类(A类 B类 C类 D类 E类)
    操作系统实六(页面置换算法之LRU)
    操作系统实验五(内存管理之动态分区分配(首次适应))
    操作系统实验四(内存管理之固定分区分配)
    CRT连接虚拟机中的linux系统(ubuntu)
    3种拨打电话的方式
    深度:ARC会导致的内存泄露
    iOS7.1Https企业证书发布方法
    iOS开发学习路线图
    iOS实例下载:使用腾讯的SDK将新浪微薄嵌入到应用中
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14587229.html
Copyright © 2020-2023  润新知