Java什么情况下数据类型可以自动转换?什么情况下需要强制转换?

2023-11-10

在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。

当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换,否则需要进行强制类型转换

Java中的自动类型转换就好比将小瓶中的水倒入到大瓶的换装过程。我们将小瓶水倒入到大瓶中时,由于小瓶的容量比大瓶的容量小,所以倒入的水永远不可能溢出大瓶。

同样,在Java中,将取值范围小的数据类型的变量值赋值给取值范围大的数据类型的变量时,程序也不会出现任何问题。

Java中支持的不同数据类型之间的自动转换如图所示:

从上图可以看出,Java中取值范围小的byte、short、char等类型数据都可以自动转换为取值范围大的数据类型(如int类型),并最终都可以自动转换为双精度浮点数类型。

例如:

byte b=3;           
int x=b;              //程序把byte类型的变量b转换成了int类型,无须特殊声明
double y=x;           //将int类型的变量x转换成double类型,无须特殊声明

强制转换类型语法格式举例如下:

int i = 21;
double d = 21.333;

//自动转换类型
double i2 = (double) i;//完整语法格式
double i3 = i;//省略语法格式

//强制转换类型
int d2 = (int) d;//只能这样转换,没有省略格式

数据类型按照容量大小排序为:

注意:

(1)byte,short分别与char两两之间转换,不能使用自动类型转换。

(2)byte,short分别与char两两之间转换,只能使用强制转换。但是这样很容易造成精度丢失,导致转换数据不准确!!!因为他们之间转换,都会首先转换为int类型,再转换为他们之间的其他类型数据。然而他们本身存储数据范围很小,大于128就会转换出错。所以谨慎使用!!!

(3)byte与short之间,既可以使用自动类型转换,也可以使用强制类型转换。因为他们本质都属于整型数据,只是存储数据范围不同。

(4)boolean类型不能与其它数据类型运算,否则报错。

(5)String类型是引用类型数据,也不能与这8种基本数据类型转换,否则报错

——————————

黑马程序员Java基础课程:

20 天学会 Java - Java 数据类型学习icon-default.png?t=M666https://www.zhihu.com/education/video-course/1483149993460109313

黑马程序员 Java培训
原文 /  Java中不同数据类型之间的自动转换
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java什么情况下数据类型可以自动转换?什么情况下需要强制转换? 的相关文章

随机推荐

  • python另存为excel_python 将数据保存为excel的xls格式(实例讲解)

    python 将数据保存为excel的xls格式 实例讲解 python提供一个库 xlwt 可以将一些数据 写入excel表格中 十分的方便 贴使用事例如下 引入xlwt模块 提前pip下载好 import xlwt 使用workbook
  • MySQL数据库技术知识总结

    数据库基本概念 数据库 是以一定方式储存在一起 能予多个用户共享 具有尽可能小的冗余度 与应用程序彼此独立的数据集合 一个数据库由多个表空间 Tablespace 构成 数据库就是一个存储结构化数据的仓库 数据库管理系统 Database
  • 蓝桥杯2019年c++b组国赛题目及题解

    填空题目来源来自于 https blog csdn net l503301397 article details 90697079 大题来源于 ACwing https www acwing com problem search 2 csr
  • Altium designer 15 导入PCB各层都透明,修改各层透明度依然不好使

    Altium designer 15 0导入PCB后 整个图都变透明了 不能移动PCB上的器件 可以查看器件 修改各个层的透明度依然不好使 后来发现显示PCB维度框有问题 解决方法如下图 选择下拉列表里的任意参数就可以解决这个问题 这里选择
  • 用rfkill命令管理蓝牙和wifi

    rfkill是一个内核级别的管理工具 可以打开和关闭设备的蓝牙和wifi 列出所有可用设备rfkill list 输出如下 0 phy0 Wireless LAN Soft blocked no Hard blocked no2 hci0
  • Strapi 之API详述

    API的使用 REST API允许通过API端点访问 content types 当一个内容类型被创建时 Strapi会自动创建API端点 在查询API端点时 可以使用API参数来细化结果 可以理解为 对于每一个 content types
  • 工业协议网关IOTCS企业版正式发布

    一 发布前言 继今年5月份IOTCS开源版本发布以后 我们依然在致力于开源版的功能升级迭代 目前南向驱动类型支持OPCUA与Siemens S7协议 1200 1500型号 以及Modbus全协议 北向资源有HTTP MQTT 通过不同的连
  • 怎么设置访问服务器文件夹权限凭据,Windows server 共享文件夹权限设置

    概念 共享权限应用于通过网络连接到共享文件夹的用户 共享权限不会影响本地登录或使用远程桌面登录的用户 若要为本地登录用户或使用远程桌面登录的用户设置权限 请使用 安全 选项卡而不是 共享权限 选项卡 这样将在 NTFS 文件系统级别设置权限
  • 数组的三种定义方式

    1 数组的定义 用于存储同一类型数据的集合 其实数组就是一个容器 连续的存储单元 2 数组的好处 自动给数组中的元素从零开始编号 自动给下标 从零开始0 1 2 3 3 书写格式 元素类型 数组名 new 元素类型 元素 元素 元素 3 1
  • 新的一期AIGC训练营,9月16日开启#一起build anything

    时间 9月16号 周六 10 00 17 00地点 上海请自备电脑 window系统最佳 Mac也可以 现在早鸟报名 享受优惠价格 999 人 原价 1699 人 名额先到先得 早鸟报名还能获赠 699 AIGC知识库会员名额 新的一期训练
  • SRAM和SDRAM的区别

    DRAM 动态随机存取存储器 需要不断的刷新 才能保存数据 而且是行列地址复用的 许多都有页模式 SRAM 静态的随机存取存储器 加电情况下 不需要刷新 数据不会丢失 而且 一般不是行列地址复用的 SDRAM 同步的DRAM 即数据的读写需
  • C语言 弱定义

    说明 函数名称前面加上 WEAK属性修饰符称为 弱函数 类似C 的虚函数 链接时优先链接为非weak定义的函数 如果找不到则再链接带weak函数 意义 这种自动选择的机制 在代码移植和多模块配合工作的场景下应用较多 例如前期移植代码 需要调
  • 完全卸载docker

    停止docker服务 systemctl stop docker 列出所有docker相关组件 yum list installed grep docker 删除上一条命令列出来的所有组件 yum y remove xxxx 谨慎操作 删除
  • 因果推断(五)——反事实,后悔药?

    反事实推断一个词概括就是 后悔 例子 还是以小夏开店为例 小夏请了A明星代言后 销售量虽然有提升 但是由于该明星的代言费很贵 导致最终还是亏本了 于是 小夏想要是当时没有请明星代言 会不会就不亏本了 推断没有发生过的事情 就是反事实推断 当
  • shell编程基础(四)-shell特殊符号

    目录 符号总览 1 输出 输入重导向 1 井号 comments 1 帐户的 home 目录 1 分号 Command separator 1 连续分号 Terminator 1 点 dot 2 string 单引号 single quot
  • k8s leaderelection

    const LEASELOCKNAME tes LEASELOCKNAMESPACE kube system func main LeaseLockID uuid New String client InitClientSet run fu
  • 少儿机器人编程与软件编程区别

    现在社会 机器人编程是一门博大精深 有着多学科融合性的课程 针对少儿方面 林林总总的相关编程培训也是层出不穷 格物斯坦来分析下这两者的区别所在 纯软件是个虚拟的世界 简单而完美 就像我们上学时所说的理想条件下 而真实世界太复杂了 并且总有意
  • 十分钟了解MES系统的发展历程和标准体系

    在20世纪70年代后期到21世纪这阶段 企业之间的主要竞争因素发生了较大的变化 客户对产品的需求逐渐多样化 制造企业的生产模式也开始由大批量的刚性生产变为了多品种 小批量的柔性生产模式 生产线也从以前的手工方式转为了以自动化的机器人生产线为
  • 使用R语言中的data

    使用R语言中的data table包进行数据操作和转换是非常高效和方便的 其中 melt函数是一个非常实用的函数 可以将数据表从宽格式转换为长格式 在本文中 我将详细介绍如何使用melt函数 以及通过源代码示例展示其用法和效果 1 什么是宽
  • Java什么情况下数据类型可以自动转换?什么情况下需要强制转换?

    在程序中 当把一种数据类型的值赋给另一种数据类型的变量时 需要进行数据类型转换 自动类型转换也叫隐式类型转换 指的是两种数据类型在转换的过程中不需要显式地进行声明 当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时 系统就