我最近被问到这个问题.但是无法简明扼要地说明这两个概念是如何分开的.

例如

最后和不变:

final String name = "John";

如果我现在写

name = "Sam";

我会得到编译器错误

一成不变的:

String name = "John";
name = "Sam";

有用.

我认为这是在应用中的一部分.但是我可以在这两个主题上得到一个很好的,容易理解的解释吗?

解决方法

final意味着您不能将对象的引用更改为指向另一个引用.其中immutable意味着实际对象的值不能被更改,但是可以将其引用改为另一个.

关于您的问题的第二部分(不可变部分),编译器将创建一个值为“Sam”的新的String对象,并将其引用给它.

java中的immutable和final之间有什么区别?的更多相关文章

  1. React Immutable使用方法详细介绍

    Immutable.js出自Facebook,是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构,使用结构共享。所有的更新操作都会返回新的值,但是在内部结构是共享的,来减少内存占用

  2. 详解Immutable及 React 中实践

    Immutable 可以给 React 应用带来数十倍的提升,也有人说 Immutable 的引入是近期 JavaScript 中伟大的发明,因为同期 React 太火,它的光芒被掩盖了。这篇文章主要介绍了Immutable及 React 中的实践,需要的朋友可以参考下

  3. redux持久化之redux-persist结合immutable使用问题

    这篇文章主要为大家介绍了redux持久化之redux-persist结合immutable使用问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. react中使用antd及immutable示例详解

    这篇文章主要为大家介绍了react中使用antd及immutable示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. Immutable & Redux in Angular Way

    通过保证@Input的输入Immutable可以提升Angular的性能,但是counter数据在countercomponent中并不是Immutable,数据的修改同样难以被追踪,下一节我们来介绍使用Redux思想来构建Angular应用。

  6. javascript – 使用D3.js和Immutable.js

    在我的应用程序中,我使用D3.js进行一些可视化.现在D3使用可变的本机JavaScript数据结构.因此,一些数据编组对于使用Immutable.js是必要的.我也使用Relux和React,所以在我的商店里我管理一个不可变的地图.由于这个Map在每次更改时都会成为新东西,因此我无法将其传递给D3ForceLayout,因为它适用于可变数据,因此每次从头开始重新计算所有内容.我最终管理了不可变和

  7. javascript – 根据属性值从ImmutableJS列表中删除对象

    根据属性的值从列表中删除对象的最简单的方法是什么?我正在寻找相当于MongoDB中的$pull.我的列表看起来很简单:而且我想从数组中删除属性设置为’1’的对象.在MongoDB中,我会这样做:如何使用ImmutableJS获得相同的结果?解决方法你可以简单地说filter不可变的列表:但是,对非空列表进行过滤将导致不同的不可变列表,因此您可能需要首先检查{a:1}的发生.

  8. Guava的ImmutableList.Builder线程是否安全?

    Guava’sImmutableList.Builder的线程安全保障是什么?javadoc不说.解决方法虽然番石榴不变的课程是线程安全的,但他们的建设者并不是这样.对于大多数应用程序,只有一个线程将与任何特定的Builder实例交互.虽然没有线程安全性通常不需要记录,但是Javadoc可能对于Immutable集合构建器是有意义的.人们可能会惊讶于ImmutableList是线程安全的,而Imm

  9. java – Immutable对象如何帮助减少垃圾回收引起的开销?

    垃圾收集与物品的可变性或不变性有什么关系?

  10. 将java.util.HashMap转换为java中的scala.collection.immutable.Map

    解决方法完全可以在Java代码中使用JavaConverters–只需要几个额外的跳转来跳过:我们可以证明这样做从ScalaREPL:但是,您当然可以从Java代码轻松地调用这些方法.

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部