Java数据类型转换的示例详解

 更新时间:2022年10月08日 11:02:17   作者:共饮一杯无  
Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。本文将通过示例详细说说Java中数据类型的转换,感兴趣的可以了解一下

Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。

自动转换

一个int 类型变量和一个byte 类型变量进行加法运算, 结果会是什么数据类型?

public static void main(String[] args) {
    int i = 1;
    byte j = 2;
    // byte t = b + i; // 报错
    //int类型和byte类型运算,结果是int类型
    int k = i + j;
    System.out.println(k);
}

运算结果,变量的类型将是int 类型,这就是出现了数据类型的自动类型转换现象。 自动转换:将取值范围小的类型自动提升为取值范围大的类型 。

转换原理

byte 类型内存占有1个字节,在和int 类型运算时会提升为int 类型 ,自动补充3个字节,因此计算后的结果还是int 类型。 同样道理,当一个int 类型变量和一个double 变量运算时, int 类型将会自动提升为double 类型进行运算。

public static void main(String[] args) {
    int i = 1;
    double d = 2.5;
    //int类型和double类型运算,结果是double类型
    //int类型会提升为double类型
    double e = d+i;
    System.out.println(e);
}

转换规则

范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为int 。

byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

强制转换

将1.5 赋值到int 类型变量会发生什么?产生编译失败,肯定无法赋值。

int i = 1.5; // 错误

double 类型内存8个字节, int 类型内存4个字节。1.5 是double 类型,取值范围大于int 。可以理解为double 是8 升的水壶, int 是4升的水壶,不能把大水壶中的水直接放进小水壶去。 想要赋值成功,只有通过强制类型转换,将double 类型强制转换成int 类型才能赋值。

强制类型转换:将取值范围大的类型强制转换成取值范围小的类型。 比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行。

转换格式

数据类型 变量名 = (数据类型)被转数据值;

将1.5 赋值到int 类型,代码修改为:

// double类型数据强制转成int类型,直接去掉小数点。
int i = (int)1.5;

同样道理,当一个short 类型与1 相加,我们知道会类型提升,但是还想给结果赋值给short类型变量,就需要强制转换。

注意

  • 浮点转成整数,直接取消小数点,可能造成数据损失精度。
  • int 强制转成short 砍掉2个字节,可能造成数据丢失。

ASCII编码表

public static void main(String[] args) {
    //字符类型变量
    char c = 'a';
    int i = 1;
    //字符类型和int类型计算
    System.out.println(c+i);//输出结果是98
}

在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。

编码表 :就是将人类的文字和一个十进制数进行对应起来组成一张表格。

将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII(American Standard Code for Information Interchange 美国标准信息交换码)。

小贴士: 在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。char类型提升 为了int类型。char类型内存2个字节,int类型内存4个字节。

到此这篇关于Java数据类型转换的示例详解的文章就介绍到这了,更多相关Java数据类型转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现画线、矩形、椭圆、字符串功能

    Java实现画线、矩形、椭圆、字符串功能

    本篇文章主要介绍了Java实现画线、矩形、椭圆、字符串功能的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • SpringBoot实现自定义Starter的步骤详解

    SpringBoot实现自定义Starter的步骤详解

    在SpringBoot中,Starter是一种特殊的依赖,它可以帮助我们快速地集成一些常用的功能,例如数据库连接、消息队列、Web框架等。在本文中,我们将介绍如何使用Spring Boot实现自定义Starter,需要的朋友可以参考下
    2023-06-06
  • SpringBoot项目的两种发布方式

    SpringBoot项目的两种发布方式

    本文主要介绍了SpringBoot项目的两种发布方式,包含jar包发布和war包发布,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • IDEA如何切换JDK版本

    IDEA如何切换JDK版本

    本文主要介绍了IDEA如何切换JDK版本,JDK版本之间的关系是一个向后兼容的关系,所以我们需要切换JDK的版本号,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • java进阶之了解SpringBoot的配置原理

    java进阶之了解SpringBoot的配置原理

    今天带大家了解SpringBoot的相关知识,文中对SpringBoot的配置原理作了非常详细的图文示例及介绍,需要的朋友可以参考下
    2021-06-06
  • Kafka是什么及如何使用SpringBoot对接Kafka(最新推荐)

    Kafka是什么及如何使用SpringBoot对接Kafka(最新推荐)

    这篇文章主要介绍了Kafka是什么,以及如何使用SpringBoot对接Kafka,今天我们通过一个Demo讲解了在SpringBoot中如何对接Kafka,也介绍了下关键类 KafkaTemplate,需要的朋友可以参考下
    2023-11-11
  • 在2023idea中实现SpringBoot的IoC和AOP的方法

    在2023idea中实现SpringBoot的IoC和AOP的方法

    这篇文档详细介绍了如何在Spring Boot中实现IoC(控制反转)和AOP(面向切面编程),深入探讨了AOP的基本概念,包括AOP的作用、优势以及实现方式,最后,它提到了AOP的注解,如@Aspect、@Pointcut、@Before、@After、@AfterReturning、@AfterThrowing和@Around
    2024-11-11
  • Java动态代理和反射机制详解

    Java动态代理和反射机制详解

    这篇文章主要介绍了Java动态代理和反射机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • SpringBoot中注册Bean的10种方式总结

    SpringBoot中注册Bean的10种方式总结

    在Spring Boot应用中,Bean是构成应用的核心组件,Spring容器负责管理这些Bean,包括它们的创建、配置、组装、管理和销毁,在Spring Boot中,有多种方式可以注册Bean,本文将详细介绍这些不同的注册方式,并给出相应的示例代码和适用场景,需要的朋友可以参考下
    2024-08-08
  • SpringBoot使用ApplicationEvent&Listener完成业务解耦

    SpringBoot使用ApplicationEvent&Listener完成业务解耦

    这篇文章主要介绍了SpringBoot使用ApplicationEvent&Listener完成业务解耦示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论