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数据类型转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Rocketmq事务消息之半消息详解

    Rocketmq事务消息之半消息详解

    这篇文章主要介绍了Rocketmq事务消息之半消息详解,RocketMQ的事务消息支持在业务逻辑与发送消息之间提供事务保证,RocketMQ通过两阶段的方式提供事务消息的支持,需要的朋友可以参考下
    2023-09-09
  • java实现简单猜数字游戏

    java实现简单猜数字游戏

    这篇文章主要介绍了java实现简单猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • SpringCloud应用idea实现可相互调用的多模块程序详解

    SpringCloud应用idea实现可相互调用的多模块程序详解

    IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的
    2022-07-07
  • Spring 整合Shiro 并扩展使用EL表达式的实例详解

    Spring 整合Shiro 并扩展使用EL表达式的实例详解

    Shiro是一个轻量级的权限控制框架,应用非常广泛。本文的重点是介绍Spring整合Shiro,并通过扩展使用Spring的EL表达式。需要的朋友可以参考下
    2018-03-03
  • 你还在用Synchronized?Atomic你了解不?

    你还在用Synchronized?Atomic你了解不?

    这篇文章主要介绍了你还在用Synchronized?Atomic你了解不? 文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • SpringBoot整合Lucene实现全文检索的详细步骤

    SpringBoot整合Lucene实现全文检索的详细步骤

    全文搜索(Full-Text Search)是指对大规模存储在计算机系统中的文本数据进行检索和匹配的技术,它允许用户输入关键字,然后从海量的文本数据中快速找到相关的信息,本文介绍了SpringBoot整合Lucene实现全文检索的详细步骤,需要的朋友可以参考下
    2024-03-03
  • Spring配置文件的超详细图文介绍

    Spring配置文件的超详细图文介绍

    Spring配置文件是一个或多个标准的XML文档,下面这篇文章主要给大家介绍了关于Spring配置文件的超详细图文介绍,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 基于@GetMapping注解携带参数的方式

    基于@GetMapping注解携带参数的方式

    这篇文章主要介绍了基于@GetMapping注解携带参数的方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • java使用iterator遍历指定目录示例分享

    java使用iterator遍历指定目录示例分享

    这篇文章主要介绍了java使用iterator遍历指定目录示例,需要的朋友可以参考下
    2014-04-04
  • 基于SpringBoot和Vue3的博客平台文章列表与分页功能实现

    基于SpringBoot和Vue3的博客平台文章列表与分页功能实现

    在前面的教程中,我们已经实现了基于Spring Boot和Vue3的发布、编辑、删除文章功能。本教程将继续引导您实现博客平台的文章列表与分页功能,需要的朋友可以参考阅读
    2023-04-04

最新评论