为什么在Java算术中,上溢或下溢永远不会抛出异常?

2024-01-05

在Java算术运算期间,JVM不会抛出下溢或溢出异常。很多时候我们会遇到意想不到的结果,并想知道哪里出了问题。

而在 .NET 技术的情况下,我们有溢出和下溢异常。

所以我的问题是,为什么Java被设计成在算术运算期间不抛出这个异常


这可能是多种因素综合作用的结果:

  1. Java 之前的大型语言使用未经检查的算术。容易出现数值溢出的众所周知的算法往往已经在不依赖于检查算术的情况下解决了潜在的溢出问题。
  2. 检查算术在大量使用算术指令的算法中引入了显着的开销,这将使 Java 处于显着的劣势,尤其是在基准测试方面。
  3. 一些算法依赖于静默数值上溢/下溢。如果检查算术运算,重写这些算法很快就会变得非常重要。
  4. 检查算术对于确保内存安全来说不是必需的(与空指针和数组边界等其他 JVM 检查相反)。

.NET 虚拟执行环境(现已成为 ECMA-335 标准的一部分)引入了针对已检查和未检查算术的单独指令,使其能够独立解决使用现代托管语言工作的开发人员的性能和安全问题。

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

为什么在Java算术中,上溢或下溢永远不会抛出异常? 的相关文章

  • Volatile.Read 和 Volatile.Write 背后的逻辑是什么?

    来自 MSDN Volatile Read 读取字段的值 在需要它的系统上 插入一个 阻止处理器重新排序内存的内存屏障 操作如下 如果在该方法之后出现读或写 代码 处理器无法移动它before这个方法 and Volatile Write
  • 为什么这个动作不抽象? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我很难理解为什么一个类中的一个操作是抽象的 而另一个类中的操作不是 源代码1 编译时出错 https gyazo com cd3c
  • 如何添加 Java 正则表达式实现中缺少的功能?

    我是 Java 新手 作为一名 Net 开发人员 我非常习惯Regex Net 中的类 Java 实现Regex 正则表达式 还不错 但它缺少一些关键功能 我想为 Java 创建自己的帮助器类 但我想也许已经有一个可用的了 那么 是否有任何
  • 为什么Java中的文件名与公共类名相同? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在Java中 文件名应该与文件名相同public class包含在该文件中 为什么这是一个限制 它有什么目的 Java 有一个有趣的方法 如果给
  • 限制 JPQL 中的结果数量

    如何限制从数据库检索结果的数量 select e from Entity e I need only 10 results for instance 您可以尝试像这样给出 10 个要显式获取的结果 entityManager createQ
  • 使用 Hibernate Criteria 过滤 Map 中的键和值

    我有以下持久类 public class Code ElementCollection targetClass CodeValue class MapKeyClass CodeProperty class JoinTable name co
  • java 中的 Try-with-resources 和 return 语句

    我想知道是否放一个return里面的声明尝试资源block 防止资源自动关闭 try Connection conn return conn createStatement execute 如果我写这样的东西将会联系被关闭 Oracle 文
  • JPA 的 Hibernate 查询提示

    我一直在尝试为所有可以通过设置的提示找到一个明确的资源Query setHint String Object JPA 中的方法调用 但我一无所获 有人知道一个好的参考吗 See 3 4 1 7 查询提示 http docs jboss or
  • EJB 中 @Stateless 相对于 @Singleton 的真正用例是什么

    如果我正确理解EJB Singleton实际上与普通Java中的Singleton相同 也是spring中的单例 gt 一个实例 每个调用同时通过同一个实例 Stateless 声明一个 bean 它可以 但不得 具有多个实例 但限制是一个
  • Java 常量枚举[重复]

    这个问题在这里已经有答案了 可能的重复 理解 Java 中的枚举 https stackoverflow com questions 1419835 understanding enums in java 为什么我们应该使用枚举而不是 Ja
  • 从特定 JAR 文件读取资源(文件的重复路径)

    假设您有 jar1 和artifactId 动物园 jar2 和artifactId 动物 两个 jar 都有一个具有相同路径的资源文件 例如 animals animal txt 有什么方法可以从特定的 jar 中读取该文件吗 使用 ge
  • 将 PropertyPlaceholderConfigurer 中的所有属性注入到 bean 中

    我有一个PropertyPlaceholderConfigurer加载多个属性文件 我想通过配置 XML 将合并的属性映射注入到 Spring Bean 中 我可以这样做以及如何做 您只需创建一个属性 bean 并将其用于您的Propert
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 线程上下文类加载器和普通类加载器的区别

    线程的上下文类加载器和普通类加载器有什么区别 也就是说 如果Thread currentThread getContextClassLoader and getClass getClassLoader 返回不同的类加载器对象 将使用哪一个
  • 使用 Commons 或 Guava 将文本文件转换为 Java Set

    我想将文件中的每一行加载到 HashSet 集合中 有没有一种简单的方法可以做到这一点 怎么样 Sets newHashSet Files readLines file charSet 使用番石榴 参考 文件 readLines http
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str

随机推荐

  • 获得一副牌中的牌的得分值的最佳方法是什么

    我想知道创建一副带有分数的纸牌或计算分数的最佳方法是什么 正如您将在下面看到的 我有一个计算类来处理卡片分数 检查卡片是什么并给它一个值并计算获胜者 我正在创建一个二十一点游戏 我已经随机生成了卡牌 但现在每张卡牌的分数都遇到了麻烦 我只是
  • 如何重新打开 OS X 中情节提要中创建的关闭窗口

    我的问题很重要 但答案似乎不适用于 Swift Storyboards Cocoa 用 X 关闭后以编程方式显示主窗口 https stackoverflow com questions 6201958 cocoa programmatic
  • 查找列中的 n 个最大值

    我试图找到 SQL Server 中特定列中的 n 个最大数字 我们可以轻松找到一列中的最大值和第二大值 但是我如何找到一列中的 5 个最大值呢 您为 MySQL 和 SQL Server 都标记了它 在 SQL Server 中您可以使用
  • Python,向目录字符串添加尾部斜杠,操作系统独立

    如何添加尾部斜杠 对于 nix 对于 win32 到目录字符串 如果尾部斜杠尚未存在 谢谢 os path join path 如果尾部斜杠尚不存在 则会添加尾部斜杠 你可以做os path join path or os path joi
  • 如何在代码中访问x:Name-property?

    我将 XAML 文件中的 x Name 分配给了一个可以触发 MouseDown 事件的对象 在这种情况下 我想再次获取发件人的 x name attribute 我怎么做 该对象看起来像这样
  • float 的访问说明符的行为不符合预期

    include
  • 即使经过 360 度后如何获得以度为单位的相对旋转

    如果我有一个旋转的圆 并且达到 360 度的两倍 我会得到 720 度 但是当我旋转到 360 或 720 时 结果会给我 0 度 但我需要相对度数 所以如果圆旋转到 360 度 结果应该是 360 度而不是 0 是否有公式或函数可以在经过
  • Google Slides API - 如何更改特定颜色的所有形状的文本颜色

    我有 11 个文件 每个文件有 140 多张幻灯片 并且没有一个形状与主题 母版相关联 我的目标是更改主字体 并用黑色文本替换所有红色文本 有很多红色文本 我成功更新了主字体 感谢https gist github com dsottima
  • Java - 在一个映射中交换值和键?

    我正在为我的编程课制作一个加密和解密程序 但是我比小组领先一年 所以我想我可以利用去年学到的东西来简化事情 我决定使用树状图 该程序的作用是接收一个文件 读取包含字母编码方式的加密数据的第一行 它的格式为 A gt B B gt C C g
  • Flash 不支持 URL 中的用户名/密码吗?我有什么选择?

    我一直在尝试从开头带有用户名 密码的 URL 加载一些 JSON 所以 URL 类似于 http 用户名 电子邮件受保护 api 配置文件 http username password www myaddress org uk api pr
  • 属性编辑器设计模式?

    Warning 这是超级深入的 我理解 如果你根本不想读这篇文章 这主要是为了我整理一下我的思维过程 好的 这就是我想做的 我有这些对象 当您单击一个 或选择多个 时 它应该在右侧显示它们的属性 如图所示 当您编辑所述属性时 它应该立即更新
  • subclipse:无法加载默认 SVN 客户端

    使用 eclispe 和 subclipse 插件时 我不断收到此错误 Unable to load default SVN Client 我已经安装了 SVNKit 和 JavaHL 提供程序 但在首选项中找不到它 我正在使用 eclip
  • Amazon SES 中的特殊字符

    我正在使用适用于 PHP 的 AWS 开发工具包 https github com aws aws sdk php https github com aws aws sdk php 使用 Amazon SES 发送电子邮件 这是代码
  • 我们如何使用 C++ Lib Function 或 Windows API 在一个会话中执行多个 cmd 命令?

    在 C 中运行 cmd 命令之前 我想设置一些临时环境变量 该变量会在命令行会话结束时被删除 例如在执行下面的cmd命令之前 我想设置P4PASSWD强制环境变量 sprintf s p4Command 500 C p4 exe print
  • 将切片作为函数参数传递,并修改原始切片

    我知道 Go 中的所有内容都是按值传递的 这意味着如果我给一个函数一个切片 并且该函数使用内置函数附加到该切片append函数 那么原始切片将不会具有附加到函数范围内的值 例如 nums int 1 2 3 func addToNumbs
  • Google 地图 API 2 MapView 未更新

    我在 Android 应用程序中显示 Google Maps API v2 MapView 但奇怪的是它没有以一致的方式正确更新 我正在使用 GPS 更新地图位置 尝试了 LocationManager 和 LocationClient 尽
  • 早期返回与嵌套正 if 语句

    这是一些假设的代码示例 if e KeyCode Keys Enter if this CurrentElement null return false if this CurrentElement this MasterElement r
  • 视频标签中的 YouTube URL

    我正在使用
  • 用于 WorkItemAttribute?

    我注意到 Visual Studio 测试中有一个属性 Microsoft VisualStudio TestTools UnitTesting WorkItemAttribute 可用 我正在使用 VS 2010 Premium 和 TF
  • 为什么在Java算术中,上溢或下溢永远不会抛出异常?

    在Java算术运算期间 JVM不会抛出下溢或溢出异常 很多时候我们会遇到意想不到的结果 并想知道哪里出了问题 而在 NET 技术的情况下 我们有溢出和下溢异常 所以我的问题是 为什么Java被设计成在算术运算期间不抛出这个异常 这可能是多种