Java - 为什么 str.substring(str.length()) 是可接受的代码行? [关闭]

2023-12-19

长话短说,为什么Java不会为这行代码抛出IndexOutOfBoundsException?

str.substring(str.length())

这只是 IndexOutOfBoundsException 的定义吗?为了编程方便/对称,使开始/结束索引取相同范围的值?这只是 Oracle 的决定吗?幕后是否只有一个特殊情况可以使用包含起始索引来处理这种情况?还是有什么根本原因...

我阅读了文档,他们说它只返回空字符串(“”)。但我想知道这是否值得担心。它会改变吗?我想不会,但我想听听别人的说法。我有一些代码依赖于这样的行来工作,因为我使用 substring 和 indexOf(...)+1 来分割一些行,并且我真的不想在代码行周围放置不必要的逻辑。


这里是码头substring(beginindex)javadoc。

返回一个新字符串,它是该字符串的子字符串。子字符串从指定索引处的字符开始,一直延伸到该字符串的末尾。

例子:

"unhappy".substring(2) 返回 "happy"

"Harbison".substring(3) 返回“bison”

"emptiness".substring(9) 返回 "" (空字符串)

参数: beginIndex 开始索引,包含在内。

返回: 指定的子字符串。

投掷: IndexOutOfBoundsException - 如果 beginIndex 为负数或大于此 String 对象的长度。

基本上是因为它只是抛出 ifbeginindex > length并会返回一个空的String if beginindex == length.

正如 @Kayaman 指出的,Oracle 不会仅仅为了改变这一点而破坏对其他 java 版本的向后兼容性。

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

Java - 为什么 str.substring(str.length()) 是可接受的代码行? [关闭] 的相关文章

  • Logback线程池

    我使用 Logback 进行日志记录 我有一个问题 我将 AsyncAppender 与 ConsoleAppender 结合使用 当应用程序启动时 它会创建具有 logback 线程名称的线程池 所有日志记录工作均由 AsyncAppen
  • firebase android 基于类的更新不尊重字段名称的大小写

    我声明了以下类 注意大小写选择 public class User private String DisplayName private Boolean Proxy false SuppressWarnings unused public
  • AJAX(原型/java)在执行期间获取部分状态更新

    这部分模仿了AJAX 原型 php 在脚本执行期间获取部分状态更新 https stackoverflow com questions 800997 ajax prototype php getting partial status upd
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • JConsole主类

    我正在尝试使用其 Main 类从命令行启动 JConsole 我提取了 jconsole jar 的内容 在 MANIFEST MF 中我可以看到 Main Class sun tools jconsole JConsole 所以我尝试运行
  • ActiveMQ 桥连接器到 WebSphereMQ 而不使用 XML 配置

    我想在嵌入式代理中创建一个代理来代理 ActiveMQ 和 WebSphere MQ 之间的连接 我知道 activemq 中存在网络连接器来执行此操作 代理到代理 但我不知道如何配置它以连接到 WebSphere MQ 在网络上进行搜索时
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • java - IBM-IEEE 双精度浮点字节转换

    我需要在 Java 中对字节数组进行 IBM IEEE 浮点转换 我能够使用成功地进行单精度浮点字节的转换http www thecodingforums com threads c code for converting ibm 370
  • C++:字符串流有什么好处?

    谁能告诉我一些在 C 中使用字符串流的实际例子 即使用流插入和流提取运算符输入和输出到字符串流 您可以使用字符串流来转换任何实现operator lt lt 到一个字符串 include
  • ImageIO read() 和 write() 操作后 GIF 图像变得错误

    我有这个代码 它只是读取 GIF 文件 用背景重新绘制它 然后输出到新的 GIF 文件 问题是结果文件变得奇怪 我不知道为什么它的质量变得很差 JPG 文件不会出现此问题 如何修复它 import java awt Color import
  • javax.validation 的 @AssertTrue - 它不应该创建错误消息吗?

    我在 Spring MVC 命令 bean 中有以下代码 AssertTrue public boolean isConditionTrue return false private boolean conditionTrue 我的 JSP
  • 错误:libXext.so.6:无法打开共享对象文件:没有这样的文件或目录[重复]

    这个问题在这里已经有答案了 运行尝试打开 ods 文件的 java 文件时出现以下错误 线程 main 中出现异常 java lang UnsatisfiedLinkError opt software jdk1 6 0 45 jre li
  • Eclipse:对 Java 1.7 的失望(未绑定库)

    我在全新安装的 Eclipse 中处理全新项目时遇到问题 重现步骤 下载此版本的 Eclipse http www eclipse org downloads packages eclipse ide java developers hel
  • 用于计算句子中单词数的正则表达式

    public static int getWordCount String sentence return sentence split a zA Z0 9 a zA Z0 9 1 length sentence replaceAll a
  • android.R.layout.simple_list_item_1是什么?

    在我看到的所有示例中 他们在创建 ArrayAdapter 时仅使用 android R layout simple list item 1 android R layout simple list item 1是什么 它只是一个名为sim
  • CompletableFuture 的多个 thenAccept 块的执行顺序是什么

    所以我有一个返回a的方法CompletableFuture 在返回之前 此方法添加一个块thenAccept这是在之后执行的CompletableFuture完成 此方法的调用者还添加了另一个块thenAccept 显然 这可以通过多个链式
  • 为什么永久代空间不断增长?

    我读过几篇文章 我理解以下内容 如果我错了 请纠正我和 或编辑问题 java堆是这样分段的 年轻代 创建的对象放在这里 这部分被频繁且廉价地垃圾收集 老一代 在年轻代的垃圾收集中幸存下来的对象会移到此处 该区域的垃圾收集频率较低 并且使用对
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具

随机推荐

  • 在 Laravel 中允许多个密码重置令牌

    Laravel 5 7 密码重置系统的默认行为是在password resets删除该用户的任何其他表后 这种行为是由 Illuminate Auth Passwords DatabaseTokenRepository而且它似乎不可配置 p
  • 是否有 String.format(...) 的类型安全替代方案

    对于撰写错误 日志记录或任 何其他String消息String format 可以使用方法 不幸的是 这个方法不是类型安全的 因此以下源代码将抛出一个IllegalFormatException String s String format
  • 如何在 PowerShell 中抑制溢出检查?

    PowerShell 似乎在算术运算和转换后执行边界检查 例如 以下操作失败 byte a 255 a a byte 256 有没有办法强制溢出或类型转换 而无需通过模数或 C 和 Add Type 进行手动计算 您在 PowerShell
  • Capistrano 目标路径已存在,不是空目录

    在 Ubuntu 14 04 上使用 Capistrano 部署 Rails 应用程序时 出现以下错误 fatal destination path var www APP NAME repo already exists and is n
  • Qt - 有选择地允许单击进入较低的应用程序窗口

    即使在 Qt 应用程序中 是否也可以接收鼠标单击 对其进行评估 并在必要时让它落入 Qt 应用程序窗口下方可能发生的任何内容 注意Qt WA TransparentForMouseEvents在传递点击之前不利于对其进行评估 而且由于点击评
  • Python - 如何将饼图中的 autopct 文本颜色更改为白色?

    pie fbfrac labels fblabel autopct 1 1f pctdistance 0 8 startangle 90 colors fbcolor 我按照我想要的方式显示图表 但如果文本是白色而不是黑色 则文本在图中会更
  • 使用 async 和await 关键字的好处

    我是 C 中异步方法使用的新手 我读过这些关键词async and await通过异步某些方法来帮助使程序更具响应性 我有这个片段 第一种方式 public static void Main Console WriteLine Hello
  • 使用 SVG 作为背景图像

    我似乎无法让它按预期工作 我的页面根据加载的内容更改高度 如果需要滚动 则 svg 似乎不会拉伸 html height 100 background image url http www horizonchampion eu themes
  • 如何通过 iPhone 应用程序向 Facebook 中的某人发送好友请求?

    有没有办法通过iPhone应用程序发送好友请求 如果是 请帮助我 我在网上搜索过但没有得到解决方案 我得到以下代码来发送应用程序请求而不是发送好友请求 NSMutableDictionary variables NSMutableDicti
  • 用java将BitSet写入文件

    我有一个 BitSet 并想将其写入文件 我遇到了一个使用 writeObject 方法使用 ObjectOutputStream 的解决方案 我查看了java API中的ObjectOutputStream 发现你可以写其他东西 byte
  • 横向模式下的标签栏控制器

    我正在开发一个项目 需要在横向模式下使用应用程序 我通过将界面方向设置为横向来对 plist 文件进行更改 我也将 xib 文件中的方向更改为横向 但当应用程序在模拟器中启动时 选项卡栏控制器仍仅以纵向模式显示 任何人都可以帮忙解决这个问题
  • Angular2限制所有路由

    Helloo 我创建了一个守卫 import Injectable from angular core import Router CanActivate from angular router Injectable export clas
  • 尝试在 JavaScript 中使用 Gruber 的“改进的”URL 匹配正则表达式模式时,如何修复“无效组”错误?

    我正在尝试整合约翰 格鲁伯的一种改进的自由 准确的正则表达式模式 用于匹配 URL http daringfireball net 2010 07 improved regex for matching urls进入我的 JavaScrip
  • JS - 动态更改文本字段

    我正在尝试在不提交任何内容的情况下更改一个文本字段中另一个文本字段的值 例子 文本字段 1 输入 你好 文本字段 2 此处也插入了 你好 下面是我的表格
  • 当应用程序位于前台时,如何计算应用程序的使用时间?

    我正在开发一个 Android 应用程序来跟踪每日应用程序的使用情况 这个想法是 用户可以为任何应用程序设置每日时间限制 超过限制后最多 2 分钟内会出现通知 延迟的原因 我使用创建了一个警报系统报警管理器每分钟都会运行一个类求职意向服务这
  • 将库版本设置为稳定时遇到问题

    我创建了一个在另一个应用程序脚本中使用的库 并查看 Google 上的清单文档 它说如果您希望它自动使用最新版本 您可以将 库 部分中的 版本 设置为 稳定 可用版本 dependency libraries version 字符串 脚本使
  • 表单初始加载后会触发什么事件?

    我对可以在加载表单后触发的事件特别感兴趣 这样我就可以在控制器代码中初始化字段等 没有事件 但您可以添加一个initialize方法 该方法由FXMLLoader创建内容并将字段注入到控制器实例后 public MyController F
  • 使用自动布局的 iOS 消息单元格宽度/高度

    The Goal 我正在尝试创造一个动态message使用自动布局的单元格 我尝试过的 在大多数情况下 单元格的定位正确 并且具有以下约束的自动布局 问题 我的第一个问题是消息标签 可复制标签 宽度受到限制 这似乎可以通过使用来解决setP
  • 字符串中的空字符

    考虑这个字符串 var s A 0Z 它的长度为 3 由下式给出s length Using console log你可以看到绳子没有被切断s 1 is and s charCodeAt 1 is 0 当你在 Firefox 中提醒它时 你
  • Java - 为什么 str.substring(str.length()) 是可接受的代码行? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 长话短说 为什么Java不会为这行代码抛出IndexOutOfBoundsException str substring str length