为什么在 Java 中将数组声明为 Final 不会使其不可变?

2023-11-26

为什么在 Java 中将数组声明为 Final 不会使其不可变?宣布某件事是最终的不是意味着它不能改变吗?

From 关于不可变数组的问题很明显,将数组声明为final并不意味着它就不可更改。

以下是可能的。

final int[] array = new int[] {0, 1, 2, 3};
array[0] = 42;

我的问题是:那么这里声明final的作用是什么?


final只是关于参考由它标记的; Java 中不存在不可变数组这样的东西。当你说

private final int[] xs = new int[20];

你不被允许说

xs = new int[10];

稍后的。这就是全部final是关于。更一般地说,确保对象不可变通常是一项艰巨的工作,并且充满了一系列微妙之处。语言本身并没有为此提供太多开箱即用的功能。

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

为什么在 Java 中将数组声明为 Final 不会使其不可变? 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 使用 dplyr 将函数应用于 data.frame 中的行

    In base R我会做以下事情 d lt data frame a 1 4 b 4 1 c 2 5 apply d 1 which max With dplyr我可以执行以下操作 library dplyr d gt mutate u p
  • 尝试访问由 Devise JWT 保护的 API 时“没有可用的验证密钥”

    我有宝石devise jwt安装 我可以执行登录请求 并收到授权令牌作为回报 但是当我尝试访问安全端点时 我收到以下消息 No verification key available blaine devbox langsite backen
  • Bootstrap-Select 打开div下的选项

    我有一个固定大小的 div 假设 50 像素 里面有一个下拉菜单 我用过引导选择使其可搜索 div style width 200 div
  • 提示用户下载 PDF 文件而不是打开

    在我的项目站点中 如果单击链接 PDF 将在新窗口或父窗口中打开 好吧 我希望出现一个框 提示用户下载文件而不是打开它 有谁知道一个简单的 JavaScript onClick 事件可以在所有浏览器中使用默认设置执行此操作 我的服务器是基于
  • 全局概述覆盖

    我可以通过什么方式覆盖全局主题 以便所有使用variant outlined 的组件都受到该样式的影响 还想覆盖焦点 悬停等事件 material ui core 3 9 2 顺便说一句 我不确定有多少不同的组件有 概述 的变体 您无法在单
  • 实施访客计数器

    我是一个新手 正在使用 ASP Net 2 0 和 C 2005 开发一个网站 我想添加一个工具来计算数量 我网站的访问者数量 我已经收集了使用 Global asax 添加此功能的基本信息 我通过在 system web 部分下添加行 对
  • 此组件上的样式要求您的应用程序主题为 Theme.MaterialComponents (或其后代)

    我是 Android 新手 我可能有一个愚蠢 愚蠢的问题 我有一个活动 我想在其中动态创建多个输入字段 输入字段的数量由用户定义 因为输入是样式化的并且由 2 个元素组成 并且不想每次都创建这些元素 因为元素有多个每次都相同的参数 这就是为
  • 如何使用 jQuery 检测页面是否已完全渲染?

    使用时 document ready functioon alert Loaded 它会弹出警告框 上面写着 已加载 甚至before页面已完全加载 换句话说 加载仍在继续 就像图像一样 有什么想法吗 window on load func
  • 复制嵌套自定义对象:深度复制的替代方案

    我正在寻找一个包含类对象列表的类对象的深层副本 每个类对象都有自己的一组内容 这些对象不包含任何比整数和列表更令人兴奋的东西 没有字典 没有等待生成的生成器等 我正在一个循环中对 500 800 个对象执行深度复制 这确实减慢了程序速度 我
  • 通过互操作在 Excel 中绘制网格线

    知道在互操作中使用 Excel 2003 时关闭网格线的设置隐藏在哪里吗 DisplayGridlines 是 Excel Window 对象上的一种方法 例如 ActiveWindow DisplayGridlines true
  • 有没有办法将命名参数传递给格式宏而不重复变量名称?

    使用 Rust 的新版本 您可以像这样简化结构初始化 Foo a a b b to this Foo a b 是否可以做类似的事情format println 类似宏 现在我需要这样写 let a a let b b write file
  • JavaFX:最初从 FXML 加载场景时,在 java 代码中向场景添加新节点

    当场景最初从 FXML 加载时 如何在 java 代码中向场景添加新节点 我已经从 FXML 加载 如下所示 Parent root FXMLLoader load getClass getResource sample fxml Scen
  • MySQL 选择列名作为字段

    我有一个 mysql 表 看起来像这样 id col 1 col 2 col 3 1 2 34 64 2 6 53 23 我希望能够查询 id 并获取多行 每一列一行 例如 SELECT column name as column colu
  • 如何从图形中删除框架

    要删除图中的框架 我写 frameon False 完美配合pyplot figure 但与matplotlib Figure它仅删除灰色背景 框架保持不变 另外 我只希望线条显示 图形的所有其余部分都是透明的 使用 pyplot 我可以做
  • 使用 Python pdfMiner 提取每页文本?

    我尝试过使用 pypdf 和 pdfMiner 从 PDF 文件中提取文本 我有一些不友好的 PDF 只有 pdfMiner 才能成功提取 我正在使用代码here提取整个文件的文本 但是 我真的很想在每页的基础上提取文本 例如pages i
  • git svn 与 git 子树兼容吗?

    现在 git subtree 已经合并到核心 git 发行版中 从 1 8 0 开始它也在 Msysgit 上 有谁知道 git svn 是否可以与 git subtree 一起使用 注意 我不是在谈论子树合并策略 而是关于this 使用
  • 很长的单词无法在 HTML/CSS 中换行

    我遇到一个问题 如果用户输入长评论 单词 例如 coooooooooooooooooooooooooooooooooooooool 这会破坏页面上的格式 下面是帮助解释场景 未按比例 以及所使用的代码的图像 Html div class c
  • Firebase child_added 仅添加子项

    来自 Firebase API 添加子项 每个初始子项都会触发该事件一次 在此位置 每次有新的触发时都会再次触发 添加了孩子 一些代码 listRef on child added function childSnapshot prevCh
  • 使用 google-play-services_lib 添加 admob 广告后 Android 应用程序大小增加

    我将发布我的应用程序的两个版本 付费版本和免费版本 带有 AdMob 广告 除了我在 AdMob 服务的免费版本中使用的 google play service lib 之外 这两个版本完全相同 使用proguard后最终的apk大小是 付
  • 为什么在 Java 中将数组声明为 Final 不会使其不可变?

    为什么在 Java 中将数组声明为 Final 不会使其不可变 宣布某件事是最终的不是意味着它不能改变吗 From 关于不可变数组的问题很明显 将数组声明为final并不意味着它就不可更改 以下是可能的 final int array ne