Tag: 不变性

Java中的不可变数组

Java中的原始数组有没有不可替代的select? 做一个基本的数组final实际上并不能阻止他们做类似的事情 final int[] array = new int[] {0, 1, 2, 3}; array[0] = 42; 我想数组的元素是不可改变的。

什么是不可改变的?

这可能是有史以来最愚蠢的问题,但我认为这是一个新手完全混淆。 有人可以澄清什么是不可改变的意思吗? 为什么一个String不可变? 不可变对象有什么优点/缺点? 为什么像StringBuilder这样的可变对象比String和副诗更受欢迎呢? 一个很好的例子(在Java中)将非常感激。

string是不可变的。 究竟是什么意思?

我在不可变的string上写了下面的代码。 public class ImmutableStrings { public static void main(String[] args) { testmethod(); } private static void testmethod() { String a = "a"; System.out.println("a 1–>" + a); a = "ty"; System.out.println("a 2–>" + a); } } 输出: a 1–>aa 2–>ty 这里variablesa的值已经被改变了(虽然很多人说不可变对象的内容不能改变)。 但是说一个String意思是不可变的 ? 你能为我澄清这个话题吗? 来源: https : //docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

为什么.NETstring是不可变的?

众所周知, String是不可变的。 String是不可变的, StringBuilder类是可变的吗?

不可变与可变types

我很困惑什么是不可变的types。 我知道float对象被认为是不可变的,从我的书中有这样的例子: class RoundFloat(float): def __new__(cls, val): return float.__new__(cls, round(val, 2)) 这被认为是不可变的,因为类结构/层次?,这意味着float是在类的顶部,并且是它自己的方法调用。 类似于这种types的例子(即使我的书说dict是可变的): class SortedKeyDict(dict): def __new__(cls, val): return dict.__new__(cls, val.clear()) 而在类中可变的方法有这样的例子: class SortedKeyDict_a(dict): def example(self): return self.keys() 另外,对于最后一个class(SortedKeyDict_a) ,如果我将这种types的集合传递给它: d = (('zheng-cai', 67), ('hui-jun', 68),('xin-yi', 2)) 不调用example方法,它将返回一个字典。 带有__new__的SortedKeyDict将__new__标记为错误。 我试着用__new__将整数传递给RoundFloat类,并且标记为没有错误。

Java中string的不变性

考虑下面的例子。 String str = new String(); str = "Hello"; System.out.println(str); //Prints Hello str = "Help!"; System.out.println(str); //Prints Help! 现在,在Java中,String对象是不可变的。 那么如何为对象str分配值“Help!”。 这是否与Java中string的不变性相矛盾? 任何人都可以解释我的不变性的确切概念吗? 编辑: 好。 我现在正在得到它,但只是一个后续问题。 下面的代码是什么? String str = "Mississippi"; System.out.println(str); // prints Mississippi str = str.replace("i", "!"); System.out.println(str); // prints M!ss!ss!pp! 这是否意味着再次创build两个对象(“密西西比”和“M!ss!pp!”),并且引用str在replace()方法之后指向另一个对象?

为什么list.append评估为false?

是否有一个原因是list.append评估为false? 还是仅仅是成功时返回0的C约定呢? >>> u = [] >>> not u.append(6) True

为什么可变结构是“邪恶的”?

在这里讨论之后,我已经多次读到可变结构是“邪恶的”(就像这个问题的答案一样)。 C#中的可变性和结构的实际问题是什么?

可变与不可变对象

我试图让我的头可变与不可变的对象。 使用可变对象会导致很多不好的按压(例如从方法中返回一个字符串数组),但是我很难理解这会带来什么负面影响。 什么是使用可变对象的最佳做法? 你应该尽可能避免它们吗?

为什么在Ruby方法中使用感叹号?

在Ruby中,有些方法有一个问号( ? ),提问像include?这样的问题include? 询问是否包含所讨论的对象,然后返回true / false。 但是为什么有些方法在别人没有的地方有感叹号( ! )呢? 这是什么意思?