Java之基本数据类型转换——《我的Java打怪日记》

简介: Java之基本数据类型转换

基本数据类型转换

1. 自动类型转换

在这里插入图片描述

    //演示自动转换
    int num = 'a';//ok char -> int
    double d1 = 80; //ok int -> double
    System.out.println(num);//97
    System.out.println(d1);//80.0

在这里插入图片描述

2. 自动类型转换注意和细节

在这里插入图片描述

    //细节1: 有多种类型的数据混合运算时,
    //系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
    int n1 = 10; //ok
    //float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double
    //double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 double
    float d1 = n1 + 1.1F;//对 n1 + 1.1 => 结果类型是 float
    
    //细节2: 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时,
    //就会报错,反之就会进行自动类型转换。
    //
    //int n2 = 1.1;//错误 double -> int 
    
    //细节3: (byte, short) 和 char之间不会相互自动转换
    //当把具体数赋给 byte 时,(1)先判断该数是否在byte范围内,如果是就可以
    byte b1 = 10; //对  , -128-127
    // int n2 = 1; //n2 是int 
    // byte b2 = n2; //错误,原因: 如果是变量赋值,判断类型
    // 
    // char c1 = b1; //错误, 原因 byte 不能自动转成 char
    // 
    // 
    
    //细节4: byte,short,char  他们三者可以计算,在计算时首先转换为int类型
    
    byte b2 = 1;
    byte b3 = 2;
    short s1 = 1;
    //short s2 = b2 + s1;//错, b2 + s1 => int
    int s2 = b2 + s1;//对, b2 + s1 => int
    
    //byte b4 = b2 + b3; //错误: b2 + b3 => int
    //
    
    //boolean 不参与转换
    boolean pass = true;
    //int num100 = pass;// boolean 不参与类型的自动转换
    
    //自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型
    //看一道题
    
    byte b4 = 1;
    short s3 = 100;
    int num200 = 1;
    float num300 = 1.1F;
    
    double num500 = b4 + s3 + num200 + num300; //float -> double

3. 强制类型转换

  • 介绍

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。

  • 案例演示 ForceConvert.java

在这里插入图片描述

    //演示强制类型转换
    int n1 = (int)1.9;
    System.out.println("n1=" + n1);//1, 造成 精度损失
    
    int n2 = 2000;
    byte b1 = (byte)n2;
    System.out.println("b1=" + b1);//-48, 造成 数据溢出

4. 强制类型转换细节说明

在这里插入图片描述

  • 说明:靠近小括号的 10 先会转换成 int 类型,再乘以 3.5 就会变成 double 类型再加上后面的数,结果是 double 类型,不能把放在 int 类型里
    //演示强制类型转换
    //强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
    //int x = (int)10*3.5+6*1.5;//编译错误: double -> int 
    int x = (int)(10*3.5+6*1.5);// (int)44.0 -> 44
    System.out.println(x);//44
    
    
    char c1 = 100; //ok
    int m = 100; //ok
    //char c2 = m; //错误
    char c3 = (char)m; //ok
    System.out.println(c3);//100对应的字符, d字符

在这里插入图片描述

5. 基本数据类型转换-练习题

在这里插入图片描述

目录
相关文章
|
7天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
27天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
37 6
|
26天前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
80 3
|
7天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
20 2
|
7天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
15 2
|
10天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
34 4
|
8天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
23 1
|
12天前
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
33 2
|
18天前
|
SQL Java OLAP
java实现“数据平滑升级”
java实现“数据平滑升级”
35 2
|
22天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。