`
xinglongbing
  • 浏览: 147875 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Immutable和Mutable对象

 
阅读更多

对于Mutable对象的写操作要格外小心。

如:ArrayList是Mutable的,我们如果将多个引用指向同一个ArrayList对象,只要其中一个引用改变该对象中的内容可能会造成其他引用在操作该对象时产生不正确的结果。另外,对于迭代器,在遍历某个容器中的对象时,一定不要修改其中的对象(添加或删除),这样也可能造成不一致的现象。

 

ArrayList a = new ArrayList();

ArrayList b = new ArrayList();

a=arrayList;

b=arrayList;

..

..

a.clear(); //arrayList中的对象已经清空

..

..

b.get(); //此时b再去引用其中的对象可能造成索引非法的错误

 

 

for(int i=0; i<arrayList.size(); i++){

 

    if(){

     

    }

 

    arrayList.add(); //该容器的容量也在不断的递增 可能造成栈溢出

}

分享到:
评论

相关推荐

    Immutable 在 JavaScript 中的应用

    在 JavaScript 中,对象是引用类型的数据,其优点在于频繁的修改对象时都是在原对象的基础上修改,并不需要重新创建,这样可以有效的利用内存,不会造成内存空间的浪费,对象的这种特性可以称之为 Mutable,中文的...

    详解Immutable及 React 中实践

    JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原始对象,改变新的对象将影响到原始对象。如 foo={a: 1}; bar=foo; bar.a=2 你会发现此时 foo.a 也被改成了 2。虽然这样做...

    python面试题100.docx

    而对象有两种,"可更改"(mutable)与"不可更改"(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点) 当一个引用传递给函数的...

    最全BATPython面试题及答案.pdf

    ⽽对 象有两种,"可更改"(mutable)与"不可更改"(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,⽽ list,dict等则是可以修改的对象。(这就是这个问题的重点) 当⼀个引⽤传递给函数的...

    12.PythonicOOP上1

    值则指对象的当前状态,对于不可变对象(immutable object),如整数、浮点数、字符串和元组,它们的值在创建后不能更改。而对于可变对象(mutable object),如列表、字典和集合,值可以修改。 特殊方法是Python中...

    python核心编程第二版答案.docx

    2. **不可变(Immutable)与可变(Mutable)类型**: - **不可变类型**:包括数字、字符串和元组。一旦创建,它们的值不能更改。 - **可变类型**:如列表和字典。列表可以添加、删除或修改元素,字典则可以修改其...

    python面试题.pdf

    在 Python 中,函数参数传递可以分为两种:可更改的对象(mutable)和不可更改的对象(immutable)。在函数调用时,函数会自动复制一份引用,函数内部的引用和外部的引用没有关系。例如,代码一中的 a = 1,函数 fun...

    python变量赋值方法(可变与不可变)

    一、可变对象和不可变对象 Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变。 不可变(immutable):int、字符串(string)、float、...

    深入体会Ruby的String类型有哪些强项

    Ruby 的 String 是 mutable,这意味着它可以在创建后进行修改,而不像 Java 和 C# 中的 String,一旦创建就是 immutable,任何操作都会创建新的 String 对象。 在 Ruby 中,对于相同的字面量字符串,如 "abc",不会...

    2019-软件构造-期末试题1

    - 不可变对象(immutable object)是指一旦创建就无法改变其状态的对象。被 `static` 和 `final` 修饰的 `Date` 对象(A)并不一定是不可变的,因为 `Date` 类在某些版本的 Java 中是可变的。选项 B 中,使用 State...

    java笔记字符串的应用

    String 是 immutable 的,即不能被修改,而 StringBuffer 是 mutable 的,可以被修改。例如,在 Stringtest4 中,我们使用了 StringBuffer 来append 字符串、整数、浮点数、字符和布尔值,然后输出结果。 四、...

    ChronosDateTimeAPI

    Chronos 提供了两种类型的日期时间对象:可变(Mutable)和不可变(Immutable)。在 PHP 中,DateTime 类是可变的,这意味着一旦创建了一个实例并对其进行修改,原始对象也会被改变。而 Chronos 的 `Chronos` 类实现...

    python学习笔记(1)

    4. **列表与元组**(可能在day14.txt):介绍Python中的序列类型,如列表(mutable)和元组(immutable),包括它们的操作方法(append、extend、insert、remove等)和索引、切片等概念。 5. **字符串操作**(可能...

    生鲜配送平台源码java-base_interview_python:base_interview_python

    而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点) 当一个引用传递给函数...

    Ruby语言中的String深入理解

    Ruby语言中的String是mutable的,不像java、C#中的String是immutable的。比如 代码如下: str1=”abc” str2=”abc” 在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String...

    Python基础编程第三版mobi

    4. **列表、元组和字典**:Python中的序列类型如列表(mutable)和元组(immutable)以及键值对的数据结构字典,是理解Python数据组织的关键。 5. **字符串操作**:深入讲解字符串的创建、访问、操作方法,如切片、...

    生鲜配送平台源码java-interview_python:面试_python

    而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点) 当一个引用传递给函数...

    生鲜配送平台源码java-python-:Python-

    而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点) 当一个引用传递给函数...

Global site tag (gtag.js) - Google Analytics