• Java基础(010):原始数据类型隐式转换的一些场景


      日常开发中经常接触到的数据类型转换主要有这2种:
    • 原始数据类型之间的转换
    • 字符串、原始数据类型、日期类型之间的转换
     
      对于原始数据类型之间的转换,从代码是否直接使用强制转换来看,又分为显式转换和隐式转换,即
    • 自动类型转换/隐式类型转换:编译器自动添加的类型转换
    • 强制类型转换/显式类型转换:代码中直接写出需要强制转换的类型
     
      接下来主要列举原始数据类型隐式转换的一些场景:
    • 所有byte、char、short类型的计算都默认提升到int类型再计算:
      • byte + byte → int
      • byte + char → int
      • byte + short → int
      • char + char → int
      • char + short → int
      • short + short → int
      • byte/char/short + int → int
    • 如果参与计算的有long类型,则会提升至long类型进行计算:
      • byte + long → long
      • char + long → long
      • short + long → long
      • int + long → long
    • 常量整数默认是int类型,只要在对应的 byte / char / short 范围内的,都可以默认转换,如 byte b = 1;,除非超过对应类型的范围
      • The literal 2147483648 of type int is out of range
    • 小范围数据类型向大范围数据类型赋值也是可以直接转换的(跳跃转换也可以)
      • byte → short → int → long → float → double
      • char → int → long → float → double
    • 部分运算符会有默认转换,如 ++、--、+=、-=、/=、*=、%= 等(最后的结果强制转换后可能存在精度损失)。
     
      原始数据类型的类型转换可以参考Java语言规范相关说明:

  • 相关阅读:
    洛谷 P1555 尴尬的数字
    洛谷 P1318 积水面积
    9.8解题报告
    洛谷 P1464 Function
    洛谷 P1122 最大子树和
    cogs 66. [HAOI2004模拟] 数列问题
    49. 跳马问题
    洛谷 P3137 [USACO16FEB]圆形谷仓Circular Barn_Silver
    codevs 3164 质因数分解
    codeforces 482C Game with Strings
  • 原文地址:https://www.cnblogs.com/wpbxin/p/14534552.html
Copyright © 2020-2023  润新知