为什么 String.length() 是一个方法?

2024-01-02

如果 String 对象是不可变的(因此显然不能改变它的长度),为什么length()一种方法,而不是简单地public final int length比如数组中有什么?

它只是一个 getter 方法,还是进行某种计算?

只是想看看这背后的逻辑。


Java 是一个标准,而不仅仅是一个实现。不同的供应商可以以不同的方式许可和实施 Java,只要他们遵守该标准即可。通过对字段进行标准调用,这会非常严重地限制实现,而且没有充分的理由。

就类的未来而言,方法也更加灵活。除了在一些非常早期的 Java 类中之外,几乎从未将 Final 常量公开为对于类的每个实例可以具有不同值的字段,而不是作为方法。

The length()方法好predates http://www.tns.lcs.mit.edu/manuals/java-1.1.1/api/java.lang.String.html#length%28%29CharSequence 接口,可能来自它的第一个版本。看看效果如何。几年后,在不损失向后兼容性的情况下,引入了 CharSequence 接口,并且可以很好地适应。这对于场来说是不可能的。

因此,让我们真正反转这个问题(当您设计一个打算在几十年内保持不变的类时,您应该这样做):字段在这里获得什么,为什么不简单地使其成为一种方法?

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

为什么 String.length() 是一个方法? 的相关文章

  • 使用 Hibernate 或 Spring 打印 DBMS_OUTPUT.put_line

    我想知道 Hibernate 或 Spring 或任何第 3 方库是否提供将 DBMS OUTPUT put line 消息直接打印到 system out 或日志文件的能力 目的是在控制台中同时显示 PLSQL 日志消息和 java 日志
  • JPA 为每个项目选择最新实例

    假设我有一个会议实体 每次会议都有一个与会者和一个会议日期 在我的会议表中 我可能为每个与会者举行多个会议 每个会议都有不同的日期 我需要一个 JPA 查询 该查询将为所有与会者仅选择最新的会议 例如 如果我的桌子看起来像这样 Meetin
  • 如何使用 Gradle 2.10 将 ANTLR 词法分析器语法导入到另一个语法中?

    我一直在和 Terence Parr 一起学习 ANTLR 4权威的 ANTLR 4 参考 到目前为止我一直在使用 Gradle 2 10 及其内置 ANTLR 插件进行跟踪 然而 我在获取一些我从第 4 章第 38 41 页改编的代码以使
  • 将位于 jar 中的文件读取为 java.io.File 对象

    与此类似的问题已发布 但似乎没有一个答案对我的情况有帮助 我正在编写一个程序包 它使用 Google 的凭据来获取 Google Apps 用户 为此 我使用服务帐户 因此为了检索凭据 我需要提供 除其他外 一个 p12 签名文件 Cred
  • 如何使用java避免Mysql数据库中的“数据因列被截断”?

    在我的 Java 程序中 Hibernate Bean 类定义一列 例如 TimtableVO java Column name REPEAT DAYS private WeekdayType repeatDays hear Weekday
  • Stream#limit 返回的元素是否可以少于预期?

    如果流s下面至少有n元素 流在什么情况下sLimit可能少于n元素 如果有的话 Stream sLimit s limit n 提问原因 在这个答案 https stackoverflow com a 28082107 829571 我读到
  • java中main的返回类型

    我想知道为什么java中main方法只有void返回类型 public static void main String args 为什么main方法除了void之外没有其他返回类型 Thanks 简短的回答是 因为这就是语言规范 http
  • MAC OS 的 java.awt.Robot 类中出现无头环境错误

    我正在尝试使用 JavaFX 应用程序捕获屏幕截图Robot class 这是我在我的应用程序中使用的代码 Rectangle screenBounds new Rectangle Screen getPrimary getBounds g
  • 使用java读取Excel工作表的单列

    我有一张 Excel 表格 我想编写一个方法 该方法将参数作为要读取的列号 并返回一个由该列中的所有数据组成的数组 然后将该列元素放置在 xml 工作表中 我怎样才能编写一个方法来做到这一点 使用 Apache POI 您可以在他们的使用页
  • 在Python中删除带有重音符号的字符串中的所有非字母字符

    我正在尝试使用 Python 3 7 从包含重音符号的字符串中删除所有非字母字符 空格除外 我尝试了以下方法 import re text 29 1981 4 2008 clean text re sub W d text print cl
  • 我们可以用java定制一个垃圾收集器吗?

    我们知道java的垃圾收集器是一个低优先级线程 在java中我们可以创建任何具有高优先级的线程 那么是否有可能拥有我们自己定制的具有可变优先级的垃圾收集器线程 我们可以根据内存管理的级别进行设置 有人尝试过吗 如果是的话 您能分享一些关于如
  • Java 8 Stream - 为什么过滤器方法不执行? [复制]

    这个问题在这里已经有答案了 我正在学习使用java流进行过滤 但是过滤后的流没有打印任何内容 我认为过滤器方法没有被执行 我的过滤代码如下 Stream of d2 a2 b1 b3 c filter s gt s startsWith b
  • Java中如何限制文件大小

    我正在我的应用程序中创建一个文件 并继续向该文件中写入一些内容 但是当我的文件达到一定大小 比如说 100 行 后 我想删除第一行并将新行写入底部 要求是我的文件应该受到限制 但它应该保留我写入文件的最新内容 请告诉我在Java中是否可行
  • 如何检测java控制台中而不是GUI中的箭头键? [复制]

    这个问题在这里已经有答案了 我正在编写一个应用程序 我需要检测其中的箭头键 C 有getch 函数 我们想要获取输入 然后添加对 ASCII 值的检查 我们如何检测输入箭头键 谢谢 我写了一个Java类原始控制台输入 http www so
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • servlet 如何获取 servlet 之外的文件的绝对路径?

    我们一直在使用 System getProperties user dir 来获取属性文件的位置 现在它已经部署在 Tomcat 上 通过 servlet 系统调用将位置指定为 tomcat 而不是属性文件所在的位置 我们如何动态调用属性文
  • 从 AJP 连接器请求中检索 Shibboleth 属性

    当我在 Apache 上运行 Shibboleth 身份验证时遇到了一个奇怪的问题 当 Tomcat7 在后端运行时 Apache 通过 mod proxy ajp 发送所有内容 Shibboleth 的参数也是如此 In the 文档 h
  • 使用 Tomcat 和 gradle 进行休眠

    免责声明 我是 Java 新手 我正在尝试使用 Tomcat 和 Gradle 设置 Hibernate 构建运行正确 但看起来像persistence xml文件未被读取 我的项目结构如下 build gradle src main ja
  • Admob - 没有广告可显示

    你好 我尝试制作一些在 Android 手机上显示广告的示例程序 并尝试在 v2 2 的模拟器上测试它 代码中的一切似乎都很好 但调试器中的 AdListener 表示 响应消息为零或空 onFailedToReceiveAd 没有广告可显
  • Java applet 是否会违反同源策略

    我需要请求一些东西并从其他域获取信息 我知道由于同源政策 javascript 无法做到这一点 我的另一个选择是通过我的服务器发出代理请求 我不希望请求来自我的服务器的 IP 也不想为我的服务器创建额外的负载 并且希望客户端这样做 是否可以

随机推荐

  • 什么是动作设计模式?

    什么是动作设计模式 我以前没听说过 我怀疑它与命令设计模式 http en wikipedia org wiki Command pattern 维基百科 但我找不到任何资源 你是对的 动作模式 命令模式 在 GUI 设计中 您更常听到它被
  • 在一系列同级div中,您可以将高度设置为最高值吗?

    所以你有一组内联 div 它们的宽度是硬编码的 但内部内容可以更改 这意味着 div 的高度不同 有什么方法可以确保所有 div 保持相同的高度 而不会有内容溢出其父 div 的危险吗 我尝试过继承 min height 但似乎这不是动态的
  • 在没有有效响应之前无法一一使用代理

    我在 python 的 scrapy 中编写了一个脚本 使用新生成的代理来发出代理请求get proxies 方法 我用了requests模块来获取代理以便在脚本中重用它们 然而 问题是我的脚本选择使用的代理可能并不总是好的 所以有时它无法
  • 将 svn 文件夹恢复到以前的版本

    要将 SVN 中的特定文件夹恢复到之前的状态 我当前使用以下命令 svn rm folder svn commit m removed folder to revert to previous version svn co http pat
  • 如何使用 JQuery 动态创建输入元素来实现 keyup 函数?

    我不明白为什么下面的代码不起作用 JSFiddle 链接 http jsfiddle net JpwpM 1 document ready function addInput var limit 30 function addInput v
  • 3 / 2 = 1.0?真的吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 整数除法 如何产生双精度数 https stackoverflow com questions 3144610 java integer division how do you produc
  • 有没有可以发出 LLVM 字节码的 Javascript 引擎?

    我已经搜索了一段时间 但找不到任何发出 LLVM 字节码的引擎 但不知怎的 我无法相信没有这样的引擎 恕我直言 JXcore 将是您前进的最佳选择 当他们从 V8 转换为 LLVM 时 这是他们到达版本 2 时的目标 根据他们的路线图 然后
  • 如何在 Shiny 应用程序中更新 selectModUI 中的传单地图?

    我想更新selectModUI来自mapedit包针对不同的leaflet使用时的地图Shiny 下面是一个工作示例 library tidyverse library shiny library sf library leaflet li
  • 虚拟的概念

    我对 CPP 很陌生 正在学习后期绑定多态性 根据我所阅读和理解的内容 virtual 关键字用于后期绑定 它在编译时内部创建一个由 vptr 指向的 vtable 所以 例如 class BASE public virtual void
  • C++ 如何管理依赖项(例如使用 github 中的库)

    我对 C 世界很陌生 所以请原谅我提出这样一个虚拟问题 我用谷歌搜索了一下 但找不到正确的答案 我的问题相当简单 我应该如何在 C 世界中使用库 例如在 Java 中 有maven and gradle为了这个任务 在Python中 我使用
  • Ruby - 获取下一个夏令时更改

    我知道有一种方法可以确定某个时间是否是夏令时 Time now dst 但是有没有办法告诉我们下一个夏令时更改的日期 例如 谷歌返回Sunday November 12015 年下一次夏令时变更 由于这些日期是基于其他值 例如您正在使用的时
  • Springfox Swagger:无法解析指针:/definitions/Instant

    我们有一个 SpringBoot 项目 并且使用 Springfox Swagger 来生成 API 文档 有一个响应类包含 private Collection
  • 将我的登录凭据存储在 redux-react 中

    我想将我的登录凭据存储在 redux react 中 我附加了几行代码 问题的一部分 sksignup js import React Component from react import useState from react impo
  • 大虾PDF-如何获取文本框的高度

    我有一个包含动态文本的 formatted text box 当没有给出具体尺寸时 盒子似乎可以很好地扩展 问题是它似乎没有将光标移动到框的底部 因此我的文本与 formatted text box 中的文本重叠 如果我可以确定文本框的高度
  • AlarmManager Android 日常

    我正在尝试制定一个时间表 它应该每天下午 1 点或 2 点运行 目前我只能让它每 10 秒或 10 分钟运行一次 Intent myIntent new Intent AndroidAlarmService this MyAlarmServ
  • 以编程方式生成请求验证令牌

    从一个空的 MVC 项目开始 这是我的Startup cs using Microsoft AspNetCore Builder using Microsoft AspNetCore Hosting using Microsoft Exte
  • Couchbase 文档日期搜索 - DateTime.Now()

    我在 CB 中有一份文档 其中有两个日期 开始日期和结束日期 比方说 产品的价格折扣 10 折扣从今天开始到下周五结束 我怎样才能从CB获得今天有有效折扣的所有文件 我做了一个视图 其中包含以下内容 var dt new Date 得到今天
  • Richardson-Lucy 反卷积可以恢复潜在内核吗?

    我知道理查森 露西反卷积是为了恢复潜在图像 但假设我们有一个噪声图像和原始图像 我们能找到引起转变的内核吗 下面是一个 MATLAB 代码理查森 露西反卷积 http en wikipedia org wiki Richardson E2
  • OS X Server + GIT 与 SSH 集成失败并出现权限被拒绝错误

    我的 GIT 服务器托管在单独的 Linux 服务器上 我有 SSH RSA 密钥没有密码 我能够使用 Xcode 连接到 GIT 服务器 并且所有操作都可以通过 Xcode 5 0 2 在源代码管理中正常工作 我在本地计算机上安装了 OS
  • 为什么 String.length() 是一个方法?

    如果 String 对象是不可变的 因此显然不能改变它的长度 为什么length 一种方法 而不是简单地public final int length比如数组中有什么 它只是一个 getter 方法 还是进行某种计算 只是想看看这背后的逻辑