java学习笔记01----基本数据类型自动转换

举报
jason635 发表于 2019/09/30 23:14:21 2019/09/30
【摘要】 10.1 自动类型转换 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。 特例: 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围 Short b = 12; //合法 ...

10.1 自动类型转换

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

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

            Short  b = 12;     //合法

            short  b = 1234567;    //非法

10.2 强制类型转换(Cast)

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

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

    例如:double x  = 3.14 

          int nx = (int)x;   //值为3

 

          char c = 'a';

           int d = c+1;

          System.out.println(d);

          System.out.println((char)d);

 

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

     例如: int x = 300;

            byte bx = (byte)x;    //值为44

    不能在布尔类型和任何数值类型之间做强制类型转换。

    如果需要把布尔类型转换成一个数字该怎么办呢?

 

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

1.操作比较大的数时,要留意是否溢出,尤其是整数操作时。

    int money = 1000000000;  //10亿

    int years = 20;

    int total = money*years;   //返回的是负数

    long total1 = money*years;  //返回的仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失

long total2 = money*((long)years);   //先将一个因子变成long,整个表达式发生提升。全部用long来计算。


2. L和l 的问题:

    1.    不要命名名字为l的变量

    2.    long类型使用大写L不要用小写。

        int l = 2;

        long a = 23451l;

        System.out.println(l+1);


【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。