为什么 Java 中允许将 double 转换为 char?

2023-11-23

Why is char c = (char)65.8;Java 中允许吗?

既然这样它不应该抛出错误吗65.8不是一个精确的 Unicode 值?我知道双精度数被截断为整数,在这种情况下,65,但对我来说允许程序员进行这样的转换似乎是糟糕的设计。


它被称作缩小型铸造. From oracle docs:

原始类型的 22 种特定转换称为窄化 原始转换:

短到字节或字符

字符到字节或短字符

int 到 byte、short 或 char

long 到 byte、short、char 或 int

float 到 byte、short、char、int 或 long

double 到 byte、short、char、int、long 或 float

缩小原始转换可能会丢失有关 数值的总体大小,也可能会失去精度和 范围。

在Java中,有两种基本类型的类型转换:widening and 缩小.

A widening conversion当您从较小(或更窄)范围的类型转换为更大(或更宽)范围的类型时,会发生这种情况。因此,不会有数据丢失的机会,并且会考虑转换"safe."

A narrowing conversion当您从较大(或更宽)范围的类型转换为较小(或更窄)范围的类型时,会发生这种情况。由于我们正在缩小范围,因此有可能会丢失数据,因此考虑进行此转换"unsafe"

narrowing type conversion

转换自byte to char是一个特例,代表widening and 缩小同时。转换从转换开始byte to an int然后是int被转换为char.

我能想到为什么缩小类型转换不会导致错误/异常的原因之一是在没有数据丢失的情况下允许方便/简单/快速的类型转换。编译器将其留给我们来确保转换后的数据能够适应较小的范围。如果我们想要快速截断值(例如舍入 a 的值),它也很有用double(通过将其类型转换为int).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Java 中允许将 double 转换为 char? 的相关文章

  • 用 @DataJpaTest 注释的测试不是用 @Autowired 注释的自动装配字段

    我有一个 Spring Boot 应用程序 其中包含 Spring Data Jpa 存储库 我需要围绕这个存储库运行单元 或组件 测试 我对 Spring Data Jpa 没有太多经验 这是我的测试 这很简单 我无法让它通过 impor
  • 将tensorflow 2.0 BatchDataset转换为numpy数组

    我有这个代码 train images test images tf keras datasets mnist load data train dataset tf data Dataset from tensor slices train
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这

随机推荐

  • 我可以对 JScript (.js) 或 VBScript (.vbs) 文件进行数字签名吗?

    我知道可以签署 Windowsbinary可执行文件使用signtool 所以一直以来我都假设人们无法签署由Windows Script Host 例如 JScript js 或 VBScript vbs 因为它们只是文本文件 但今天 在打
  • 使用 preg_match 查找所有 PHP 变量

    如何找到所有 PHP 变量preg match 我制作了以下正则表达式 string Hallo var blabla var iam a var varvarvar gfg djf jdfgjh fd variable instring
  • 使用 Swift 制作可点击的 UILabel

    我想将特定单词设置为可点击UILabel使用 Swift 编写文本 是否可以 如果这里有多个标签 我如何检测按下的是哪个单词 你不能用简单的标签来做 github上有可用的库 https github com TTTAttributedLa
  • 如何检查时间偏移是否处于夏令时?

    我使用的 CMS 允许我访问用户相对于 UTC GMT 时间的时间偏移 因此 如果用户将时区设置为 EST 则此偏移量将为 5 当我需要显示当前时间时 我现在正在做的事情是这样的 date M j Y h i A time offset 3
  • 如何确定 iOS 上的设置何时更改

    我使用标准创建了一个自定义 Settings app 捆绑包root plistiPhone 的方法 我想知道是否有一种方法可以确定用户何时更改我的应用程序中的这些设置 您可以使用以下命令监听 NSUSerDefaults DidChang
  • 如何更改特定元素(而不是全局元素)的 TextBox 占位符文本颜色

    MSDN 列出了TextBox class here 我可以通过创建一个来覆盖这些主题资源ResourceDictionary in App xaml像这样
  • 从 Angular 5 升级到 Angular 7 后,找不到“AppModule”的 NgModule 元数据

    我们的开发团队最近将 Angular 5 项目更新为 Angular 7 我已经下载了该存储库并且正在尝试构建源代码 但是当我运行ng build命令我得到一个找不到 AppModule 的 NgModule 元数据时出现错误 如果我运行n
  • 将焦点转移到特定领域

    我有一个按钮 可以在页面上添加显示表单 单击该按钮时如何将焦点移动到表单的第一个字段 简单的例子 HTML
  • 保存和恢复 shell 变量

    我有两个 shell 脚本 我想从 C 程序调用它们 我希望第一个脚本中设置的 shell 变量在第二个脚本中可见 它看起来像这样 a sh var blah
  • C++ 创建数组

    为什么我不能做这样的事情 int size menu size int list size 有没有办法不使用向量来解决这个问题 数组更快 所以我想使用数组 thanks 大小必须在编译时已知 因为编译器需要知道多少堆栈空间需要为其分配足够的
  • 获取系统 ping 的输出而不打印到控制台

    我想打电话ping从 Python 中获取输出 我尝试了以下方法 response os system ping c 但是 这会打印到控制台 这是我不想要的 PING 10 10 0 100 10 10 0 100 56 86 bytes
  • Microsoft Sync Framework 与 Nhibernate TooManyRowsAffectedException 冲突

    我们正在尝试将 Microsoft Sync Framework 实现到我们的应用程序中 使用 NHibernate 保留其域 我们遇到的问题之一是 在 Sync Framework 更改了您的初始数据库结构 添加影子表和触发器 后 当您尝
  • 在redis中存储带有过期前缀的键

    尝试使用键前缀存储过期 x 时间的值 我正在使用redis 我目前正在使用 hset 存储值 import redis r redis StrictRedis localhost for i in range 10 r hset name
  • pthread条件和进程终止

    我有一个进程共享 pthread 条件 带有关联的互斥体 如果在此条件下等待的进程 使用 pthread cond wait 或 pthread cond timedwait 被终止 会发生什么 这个条件还能被其他进程使用吗 在我的场景中
  • 让用户指定服务在哪个帐户中运行

    我有一个应该在域帐户下运行的 Windows 服务由用户在安装时指定 这怎么可能 Wix安装程序 即要求用户提供服务应使用的帐户 密码 背景 我的服务需要访问网络共享并且LocalSystem没有适当的权限 因此我想使用现有的域用户帐户 服
  • 通配符可按精确扩展名获取文件

    在诊断需要循环文件的较大批处理脚本时 log扩展我发现了一个有趣的行为 在包含如下文件的示例目录中 bar log foo log foo log ignore foo log log 1676521099 not related 我的小测
  • START TRANSACTION 在 BEGIN ... END 上下文中或在 and LOOP 语法之外

    我有两个关于 MySQL 中的复合语句和事务的问题 FIRST MySQL手册中有两处注释 Note 在所有存储的程序中 解析器将 BEGIN WORK 视为 BEGIN END 块的开头 在此开始交易 上下文 请使用 START TRAN
  • Android - 使用 JSOUP 解析 JS 生成的 url

    我试图解析由 Bootstrap s Bootpage js 生成的 url 它看起来像https example com page 2但 JSOUP 无法解析它并显示主 url 如何从 Bootpage 获取正常链接或如何使 JSOUP
  • 由于迁移到 java 1.7 Xml 文档元素不会缩进

    我正在尝试缩进由 Transformer 生成的 XML 除了第一个节点 文档元素之外 所有 DOM 节点都按预期缩进 文档元素不另起一行 只是在 XML 声明之后连接 当我迁移到 java 1 7 时 会出现此错误 而使用 java 1
  • 为什么 Java 中允许将 double 转换为 char?

    Why is char c char 65 8 Java 中允许吗 既然这样它不应该抛出错误吗65 8不是一个精确的 Unicode 值 我知道双精度数被截断为整数 在这种情况下 65 但对我来说允许程序员进行这样的转换似乎是糟糕的设计 它