首页 > 其他分享 >类型转换

类型转换

时间:2023-02-06 01:00:08浏览次数:26  
标签:类型转换 int long 内存 类型 溢出

类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要进行类型转换

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算

低 ——————————————————> 高
byte,short,char ——> int ——> long ——> float ——> double
* 这里的高低指它们的容量(或者 字节大小)

* 这里 float 的容量大于 long 的容量,是因为浮点数的优先级一定大于整数
  • 自动类型转换(低 ——> 高)

  • 强制类型转换(高 ——> 低)

    • 格式:(类型) 变量名

      • 代码示例

        public class case{
          public static void main (String[] args){
            int i = 128;
            byte b = (byte) i;//强制转换,内存溢出
        
            System.out.println(i);
            System.out.println(b);
          }
        }
        
      • 运行结果示例

        128
        
        -128
        
      • byte类型 对应的 Byte类 的最大值为127,因此将 int类型 中 i 的值强制转换为 byte 类型时出现了 内存溢出 的问题

      • 因此当进行转换时,尽量避免内存溢出的情况

        注意点:    
                1. 不能对布尔值进行转换
        
                2. 不能把对象类型转换为不相干的类型
        
                3. 在把高容量转换到低容量时,需要强制转换
        
                4. 转换的时候可能存在内存溢出,或者精度问题!
        
      • 相关常见问题

        • 操作比较大的数时,注意溢出问题

        • 代码示例

          public class case{
            public static void main(String[] args){
              int money = 10_0000_0000; //这里因为 JDK7 的新特性,数字之间可以用下划线分割
              int years = 20;
              int total = money * years; //因为计算时内存溢出了,所以运行后输出结果为 -1474836480,因此结果错误
              long total2 = money * years; //因为在转换成 long类型之前,计算时默认是 int类型 的值,所以在转换成 long类型 之前已经存在 内存溢出 的问题,因此结果错误
              long total3 = money * ((long)years); //在计算前先将一个数转化为 long类型,再进行计算时自动转换以 long类型 的值进行计算,不存在内存溢出问题,因此结果正确
          
              System.out.println(total);
              System.out.println(total2);
              System.out.println(total3);       
            }        
          }
          
        • 运行结果示例

          -1474836480
          
          -1474836480
          
          20000000000
          

标签:类型转换,int,long,内存,类型,溢出
From: https://www.cnblogs.com/bai-Lv/p/17093793.html

相关文章

  • 7-类型转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。低------------------------->高byte,short,char->int->long->float->double运算......
  • java类型转换和练习
    1. 自动类型转换细节1. 有多种数据类型混合运算时,自动转换成容量最大的数据类型然后再运算2. byte、short、char之间不能相互自动转换3. 当把数据分配给......
  • 实战:第十九章:存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误
    使用雪花算法随机生成的id,使用Long类型存储到redis的时候,反序列化为Object类型,对于数值类型,取出后统一转为Object,导致泛型类型丢失,数值自动转为了Integer类型,rangeofint......
  • 类型转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。​ 低------------------------------------------------------------>高​ byte,short,......
  • (转)go类型转换strconv详解
    原文:https://blog.csdn.net/xixihahalelehehe/article/details/1046720691.零值变量在定义时没有明确的初始化时会赋值为零值。零值是:数值类型为0,布尔类型为false......
  • [go]go接口装箱-其它类型转换为interface类型
    Interface实现原理分析具体类型转换成接口类型到此已经知道什么是接口以及接口的底层结构,那么当具体类型赋值给接口类型时,是如何进行转换的?再来看下2.3中的示例package......
  • 类型转换
    示例:inti=10;//类型高到低强制转byteb=(byte)i;//防止内存溢出System.out.println(b);inti1=10;//类型低到高自动转......
  • 02-数据类型转换和运算符
    一.数据类型转换1.常见的转换函数函数说明int(x[,base])将x转换为一个整数float(x)将x转换为一个浮点数complex(real[,imag])创建一个复数,real为......
  • 可空类型转换为普通的类型
    在日常开发中,我们经常遇到可空类型赋值给另一个变量,会提示我们无法将Int?隐式转换为int,如图所示图1解决方案:通过Value属性可以把可空类型转换为普通的类型,如下图所示......
  • scala+spark把某列string类型转换dataFrame的日期,array<double>,array<string>格式
    result=resdf.withColumn("Date",to_date(col("Date"),"yyyy-MM-dd")).\withColumn("arrayDouble",regexp_replace(col("arrayDouble"),"\\]","")).\withCo......