[Java]“不同族”基本数据类型间只能“强转”吗?

news/2024/11/15 22:22:01/文章来源:https://www.cnblogs.com/cnb-yuchen/p/18298193

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://www.cnblogs.com/cnb-yuchen/p/18298193
出自【进步*于辰的博客】

本文阐述需要计算不同位二进制的表示范围,引用博文《[MySQL]知识点》中的【数据范围通式】一栏得出的计算公式。虽然Java与MySQL属不同体系,但是数据类型的“约定”是相同的。因此,大家可以此博文作为参考。
参考笔记二,P65.1。

目录
  • 先言
  • 1、int → char
  • 2、float与int
  • 最后

先言

两个结论:

  1. 数据类型转换分为显式转换和隐式转换两种方式,显式转换属于“强转”。具体何种方式取决于转换前后类型所占字节数的大小。
  2. int类型采用有符号二进制存储,char类型采用无符号二进制存储。

1、int → char

引用那篇博文中关于数据类型数值范围的计算通式:
在这里插入图片描述

int类型占4个字节,char类型占2个字节,先计算一下这两种类型的数值范围:

  1. int类型数值范围:-2{8*4-1} ~ 2{8*4-1} - 1 = -2.147483648E9 ~ 2.147483647E9;(有符号二进制)
  2. char类型取值范围:-2{8*2-1} ~ 2{8*2-1} - 1 = -32768 ~ 32767;(有符号二进制)
    注:这个取值范围是按照字节长度计算的。实际上,由于char类型对应ASCLL码,ASCLL码是正数,故不能按照有符号二进制的方式进行计算。
    char类型由16位无符号二进制表示,故char类型数值范围是:0 ~ 2{8*2} - 1 = 0 ~ 65535

字节长度:int > char,故int类型转为char类型属显式转换。但有一个特例

当转为char类型的整型数据是常量,且数值在char类型的数值范围之内时,可隐式转换。

说明示例:
1、将数值在char类型取值--数值范围内的int常量转为char类型。

char c1 = -1;//----------A
char c2 = 65536//;-------B
char c3 = 0;//-----------C
char c4 = 65535;//-------D

char类型的数值范围是: 0 ~ 65535。故A、B编译报错,而C、D转换成功。

2、将int常量转为char类型。

int a1 = 100;
final int a2 = 100;
char c5 = a1;// 编译报错
char c6 = a2;// 转换成功

尽管100在char类型的取值范围内,但a1是变量,故编译报错;而a2以及举例1中的都是常量,故转换成功。

2、float与int

float类型与int类型都占4个字节,且都采用有符号二进制进行存储,

int类型的最大和最小值分别是:

Integer.MAX_VALUE;// 2147483647
Integer.MIN_VALUE;// -2147483648

2147483647等于 231 - 1,-2147483648等于 -231

float类型的最大和最小值分别是:

Float.MAX_VALUE;// 3.4028235E38
Float.MIN_VALUE;// 1.4E-45

这两个值是如何计算出来的?这涉及到浮点数二进制的计算方法,大家可查阅博文《浮点数(小数)在计算机中如何用二进制存储?》。具体如何计算,我暂无头绪。

对于float与int间转换,只能强转,那有没有限制呢?做个测试:

(int) Float.MAX_VALUE;// 2147483647
(int) Float.MIN_VALUE;// 0

可见,无限制。

最后

暂无言。

本文持续更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/742466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

还在困惑需要多少数据吗?来看看这份估计指南 | CVPR 2022

论文基于实验验证,为数据需求预测这一问题提供了比较有用的建议,详情可以直接看看Conclusion部分。 来源:晓飞的算法工程笔记 公众号论文: How Much More Data Do I Need? Estimating Requirements for Downstream Tasks论文地址:https://arxiv.org/abs/2207.01725 论文代…

uniapp实现问卷多项填空

产品提出了一个需求,需要实现类似问卷星的记录单,要求有单选,多选,填空,以及多项填空。前三者好实现,最后一个花费了我挺长的时间。 在pc端后台管理模板选项设置的时候,保存是将整个问题保存进去,以三个或三个以上的下划线为一个空,保存的形式例为: cm* cm*___ cm…

编译器

本页面主要介绍了各系统下各类编译器/解释器的安装步骤。 GCC Windows 手动下载安装 访问 MinGW-w64 的下载页面,有多个构建版本。方便起见,我们使用由 WinLibs 提供的构建版本。 首先前往 WinLibs 下载最新的安装包,选择合适的版本,本文选择了 GCC 12.3.0 + LLVM/Clang/LL…

MacOS 15 Sequoia 启用允许“任何来源”应用

MacOS 15 Sequoia 新系统中,spctl --master-disabl指令被禁用,无法启用允许“任何来源”应用程序,导致每一次安装新的应用程序,需要手动在设置中允许,十分麻烦。MacOS 15 Sequoia 启用允许“任何来源”应用 spctl 无法使用 在 MacOS 15 Sequoia Beta3 系统中 spctl 命令被…

ctfshow sql-labs(笔记)

这是当时做题的时候记得笔记有些乱看不懂的可以私我 判断闭合方式: id=1’ and 1=1–+ *正常回显* id=1’ and 1=2–+ *异常回显*id=1 and 1=1 *正常回显* id=1 and 1=2 *异常回显*id=1’) and 1=1–+ 回显正常 id=1’) and 1=2–+ 回显异常id=1") and 1=1–+ 正常回显 id…

服务器(RAID1)数据丢失恢复

服务器数据恢复是指将物理服务器或虚拟服务器上丢失的数据重现还原的操作。配备服务器方便数据集中存储管理,建立信息系统。服务器上的数据通常是存储在硬盘上,出于数据安全和性能的考虑,这些硬盘会组建RAID1磁盘阵列。服务器中的数据丢失了会带来巨大损失,所以,定期对服务…

服务器异常状态怎么解决

服务器异常状态的解决方法需要根据具体的问题和故障类型来确定。 一、硬件故障 检查电源和连接: 确保电源线没有松动或损坏。 检查电源插座是否有电。 如果服务器有多个电源单元,确保它们都在正常工作。 检查内部硬件: 检查服务器的内存条是否完全插入插槽中,并且与服务器兼…

服务器(RAID)数据丢失了如何恢复?

一、评估数据丢失情况 确认数据丢失的原因:了解数据丢失的具体原因,如硬件故障、软件问题、人为错误、病毒攻击等,有助于确定合适的恢复策略。 检查RAID状态:查看RAID控制器的状态报告,了解是否有硬盘故障、RAID级别变化或其他异常情况。 二、尝试初步恢复措施 检查备份:…

【日记】京爷居然带她孩子来这个小县城学舞……(656 字)

正文今天暴晒。太阳好得就像昨天的暴雨是假的一样。昨晚睡得晚,今早困得不行。不过还是在 11:30 的时候,趁着空隙出去把信件寄了出去。感冒还是没好的样子,还是有鼻炎,还鼻塞。鼻子里面总热热的,呼出热气,感觉不太舒服。珍的工作环境好像变得恶劣了一些,祝她好运吧。有点…

什么原因会导致raid掉阵

RAID掉阵,即RAID磁盘阵列失效或无法正常工作,可能由多种原因引起。 一、硬件故障 硬盘故障: 阵列中的硬盘出现物理故障,如电路板损坏、磁头损坏、盘面损坏、坏扇区等,会导致RAID无法正常工作。这些故障可能是由于硬盘老化、使用环境恶劣(如温度过高、湿度过大)、意外碰撞…

服务器启动时发出嘀嘀声

当服务器启动时发出嘀嘀声时,这通常是硬件自检(POST,Power-On Self-Test)过程中检测到故障或问题的信号。嘀嘀声的不同模式(如长短、间隔)通常对应着不同的故障类型。 一、识别嘀嘀声的模式 记录嘀嘀声的模式:注意嘀嘀声的长短和间隔,因为不同的组合可能代表不同的硬件…

网站生成内容页提示“Table *.phome_ecms_ doesnt exist......update ***_ecms_ set havehtml=1 wher

生成内容页提示“Table *.phome_ecms_ doesnt exist......update ***_ecms_ set havehtml=1 where id= limit 1” 原因是你修改了栏目所属系统模型导致,因为栏目原来所属系统模型本身就有信息,而你改动了所属系统模型,使得这些信息无法找出所属栏目导致出错。 解决办法:修改…