zoukankan      html  css  js  c++  java
  • 【Java】Java_09 类型转换

    1.自动类型转换

    自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。

     特例可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

                Short  b = 12;     //合法

                short  b = 1234567;    //非法

    2.强制类型转换(Cast

    强制类型转换,又被称为造型,用于显式的转换一个数值的类型在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

    强制类型转换的语法格式:“(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型

    当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值

    3.基本类型转化时常见错误和问题

    操作比较大的数时,要留意是否溢出,尤其是整数操作时(详细请见代码)

    代码示意:

    public class TestCastType{
        public static void main(String[] agrs){
            //转型
            byte a = 100;
            //超过byte的范围,精度损失错误
            //byte b = 300;
            //char c = -3;
            char d = 'A';
            int e = d;
            System.out.println(d);
            System.out.println(e);
            
            //测试强制转型
            int f = -100;
            char g = (char)f; //-100已经超过char的表数范围,所以转换成完全不同的值
            System.out.println(g);
            
            //类型提升 做所有的二元运算符(+-/*%),都会有类型提升的问题
            int c1 = 100;
            long c2 = 200;
            long c3 =(long)(c1+c2);//不做类型转换则会报错:精度损失 
            
            
            //一个活80岁的人一辈子脉搏的跳动次数
            int times = 75;
            long total = 75L*60*24*365*80;
            System.out.println(total);
            //特别说明:在转型时候最好在75后面就强制转换为long,避免在数据相乘过程中超过表数范围造成转型失败
        }
    }
  • 相关阅读:
    django监测登录成功事件
    大兔子生小兔子问题
    XML 命名空间(XML Namespaces)介绍以及节点读取方法
    喝汽水问题
    一个女程序员的男友需求说明书(转)
    ASP.NET学习(二)
    字典序排序
    如果说中国的程序员技术偏低,原因可能在这里(转)
    BI(摘)
    肝脏、心脏、脾脏、肺脏、肾脏的毒素表现以及食疗排毒
  • 原文地址:https://www.cnblogs.com/OliverQin/p/6706340.html
Copyright © 2011-2022 走看看