首页 > 其他分享 >Day08——强制转换

Day08——强制转换

时间:2024-10-02 14:44:53浏览次数:6  
标签:Day08 转换 int double System long println 类型 强制

类型转换

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

类型的优先级

低----------------------------------------------------------->高

byte,short,char->int->long->float->double

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

 //内存溢出
        int i1= 128;
        byte i2=(byte)i1;      //内存溢出——byte类型取值范围是 -128 到 127,超出范围
        //强制转换    (类型)变量名!!!!!    高--->低
        //自动转换                          低--->高
        System.out.println(i1);  //i1=128
        System.out.println(i2);  //i2=-128
        System.out.println("====================================");
        int i3=10;
        double i4=i3;
        System.out.println(i3);
        System.out.println(i4);
        System.out.println("====================================");
        //转换时,浮点数的精度问题
        System.out.println((int)23.7);          //23
        System.out.println((int)-45.89f);       //-45

        /*
        类型转换的注意事项
        1.不能对布尔值转换
        2.不能把数据类型转换为不相干的类型
        3.优先级高转换为低的时候,强制转换
        4.在转换过程中,可能存在精度问题或者数据溢出问题
         */
        System.out.println("====================================");
        char i5='a';
        int i6=i5+1;
        System.out.println((int)i5);       //97
        System.out.println(i6);            //98
        System.out.println((char) i6);     //b

类型转换的注意事项

​ 1.不能对布尔值转换
​ 2.不能把数据类型转换为不相干的类型
​ 3.优先级高转换为低的时候,强制转换
​ 4.在转换过程中,可能存在精度问题或者数据溢出问题

强制类型转换

自动类型转换。

较大的数字计算

//在打出较大数字时,可以用下划线分隔开,下划线不会输出
        int i1=10_0000_0000;         //十亿    每四位数有一个下划线分隔开
        System.out.println(i1);
        System.out.println("========================================");
        //计算问题:每年赚10亿,20年一共赚多少?
        int money=10_0000_0000;
        int years=20;

        int total=money*years;
        System.out.println(total);//-1474836480
        long total2=money*years;  //转换为范围更大的long。
        // 但money*years计算结果已经默认是int类型了,然后再转换为long类型,就有问题了
        System.out.println(total2);//-1474836480
        long total3=money*(long)years;
        System.out.println(total3); //200_0000_0000---------正确计算,先把一个数转换为long类型
        //在 Java 中,当一个 `long` 类型与一个 `int` 类型相乘时,结果为 `long` 类型。
        
        //这是因为在 Java 的运算中,如果参与运算的数据类型不同,会自动进行类型提升,以确保计算的准确性和避免数据丢失。
        // 由于 `long` 类型的取值范围大于 `int` 类型,所以计算结果会被提升为 `long` 类型。

注意点:

  1. 在打出较大数字时,可以用下划线分隔开,下划线不会输出。每四位数有一个下划线分隔开。如:10_0000_0000

  2. long类型与int类型相乘,结果是long类型。

    因为在 Java 的运算中,如果参与运算的数据类型不同,会自动进行类型提升,以确保计算的准确性和避免数据丢失。由于 long 类型的取值范围大于 int 类型,所以计算结果会被提升为 long 类型

    表述范围小的可以自动转换为表述范围大的

    在 Java 中,不同类型的数字进行加减乘除运算时,结果的类型遵循以下规则:
    
    **一、加法(+)**
    
    1. 如果两个操作数中有一个是 `long` 类型,那么结果为 `long` 类型。
       - 例如:`int a = 10; long b = 20; long result = a + b;`,结果 `result` 是 `long` 类型。
    2. 如果两个操作数中有一个是 `double` 类型,那么结果为 `double` 类型。
       - 例如:`int a = 10; double b = 20.5; double result = a + b;`,结果 `result` 是 `double` 类型。
    3. 否则,如果两个操作数都是 `int`、`short`、`byte`、`char` 类型,结果为 `int` 类型。
       - 例如:`short a = 10; short b = 20; int result = a + b;`,结果 `result` 是 `int` 类型。
    
    **二、减法(-)**
    
    与加法类似:
    
    1. 如果两个操作数中有一个是 `long` 类型,那么结果为 `long` 类型。
    2. 如果两个操作数中有一个是 `double` 类型,那么结果为 `double` 类型。
    3. 否则,如果两个操作数都是 `int`、`short`、`byte`、`char` 类型,结果为 `int` 类型。
    
    **三、乘法(*)**
    
    1. 如果两个操作数中有一个是 `long` 类型,那么结果为 `long` 类型。
    2. 如果两个操作数中有一个是 `double` 类型,那么结果为 `double` 类型。
    3. 否则,如果两个操作数都是 `int`、`short`、`byte`、`char` 类型,结果为 `int` 类型。
    
    **四、除法(/)**
    
    1. 如果两个操作数中有一个是 `double` 类型,那么结果为 `double` 类型。
       - 例如:`int a = 10; double b = 20.5; double result = a / b;`,结果 `result` 是 `double` 类型。
    2. 如果两个操作数都是 `int`、`long`、`short`、`byte`、`char` 类型:
       - 对于整数除法,结果为整数类型,即如果两个操作数都是 `int`,结果为 `int`;如果两个操作数中有一个是 `long`,结果为 `long`。
       - 例如:`int a = 10; int b = 3; int result = a / b;`,结果 `result` 是 `int` 类型,值为 3。`long c = 10L; long d = 3L; long result2 = c / d;`,结果 `result2` 是 `long` 类型。
    
    需要注意的是,整数除法可能会导致精度丢失,因为它会截断小数部分。如果需要精确的除法结果,可以将操作数之一转换为 `double` 类型进行计算。
    
    表述范围小的可以自动转换为表述范围大的
    
 自我测评
 1.将int类型的128转换为byte类型
 2.将char类型的‘a’转换为int类型
 3.计算10亿乘20的准确结果

标签:Day08,转换,int,double,System,long,println,类型,强制
From: https://www.cnblogs.com/xiaokunzhong/p/18444729

相关文章

  • 避免 ChatGPT 电脑版客户端弹出强制登录的方法
    众所周知现在的ChatGPT可以不用登录就能使用,并且现在GitHub上已经出现了PC版的ChatGPT客户端,使用上的感觉是由web浏览器套壳成的一个跨平台桌面应用,像是由类似Electron+Vue3框架开发封装的APP然而我们在不登陆状态下使用该客户端的时候,有时会遇到上述弹出强制登......
  • 17_document的全量替换、强制创建以及图解lazy delete机制
    1、document的全量替换2、document的强制创建3、document的删除1、document的全量替换(1)语法与创建文档是一样的,如果documentid不存在,那么就是创建;如果documentid已经存在,那么就是全量替换操作,替换document的json串内容(2)document是不可变的,如果要修改document的内容,第一种......
  • JavaSE——进制转换、原码、反码、补码、位运算(左移、右移、取反)
    目录一、四种进制介绍二、进制的转换 (一)二进制—>十进制(二)八进制—>十进制(三)十六进制—>十进制(四)十进制—>二进制(五)十进制—>八进制(六)十进制—>十六进制(七)二进制—>八进制(八)二进制—>十六进制(九)八进制—>二进制(十)十六进制—>二进制三、原码......
  • `slash2` 是一个用于处理路径分隔符的工具包,主要作用是将 Windows 风格的路径分隔符(`
    slash2是一个用于处理路径分隔符的工具包,主要作用是将Windows风格的路径分隔符(\)转换为Unix风格的路径分隔符(/)。这对于跨平台开发特别有用,因为不同操作系统的路径分隔符不同,slash2可以帮助你统一路径格式,确保代码在不同平台上都能正常工作。主要功能路径分隔符转换:将路径......
  • 高清视频格式转换软件 WonderFox HD Video Converter 序列号
    WonderFoxHDVideoConverterFactoryPro是一款多语言、一体化的软件应用程序,专注于音频视频转换、编码、下载、编辑和录制。在WonderFox独家视频编码技术的支持下,HDVideoConverterFactoryPro可实现更高质量的输出,使其在众多高清视频转换器中脱颖而出。该版本已内置序......
  • 修改图片的DPI为300,图片格式转换成jpg,nodejs脚本
    //用sharp转换图片格式constSharp=require('sharp');//引入fs库用于文件操作constfs=require('fs');//引入path库用于处理文件路径constpath=require('path');//引入exiftool库用于处理图片元数据constexiftool=require('exiftool-vendored').exifto......
  • 数据转换新利器,开启企业高效之路
    Maria是S公司的采购专员,最近需要进行公司设备的采购,这可让她犯了难:公司多个部门提交采购申请,但每个部门都有着不同的需求。一时间她就收到了大量的申请单,却难以高效整合处理(比如哪些申请可以合并采购,哪些需要拆分单独处理)。此外,在整个采购流程中,Maria还不得不手动进行流程推进、......
  • 初学Java基础Day08 方法,方法的递归,方法的重载
    一,方法1.概念:        特定功能的代码块2.好处:        减少代码的冗余3.分类:1.无参数无返回值的方法2.带参数的方法3.带返回的方法4.理解:        参数是方法调用时传入的数据,返回值是方法执行完毕后返回的数据1.无参数无返回的方法//语法结......
  • pg结果子查询转换数据不正确
    1、问题同样的sql,执行思路,在测试环境,可以正常获取结果,生产环境数据就是不对,怀疑是PG版本不同。sql如下:xx的意思:查询completion_date,6天后的日期(跳过节假日),结果数据都没有转换 SELECTdistinct   A.input_user,   A.acqtn_mode,   A.assemble_idAS......
  • 视频格式转换 CoolUtils Total Movie Converter v4.1 中文授权版
    CoolUtilsTotalMovieConverter 是一款适用于PC端的视频格式转换软件,支持转换几乎所有常见的视频格式。无论你需要将视频转换为AVI、FLV、MPG、WMV、MPEG等格式,还是想将视频优化用于XBox、iPhone、iPad等设备,这款工具都能帮你实现。新版添加了“VideoToDevice”功能,确......