Tag: 可变

MutableBigInteger的性能

我尝试使用BigInteger计算具有大精度(高达10000)的特定输入下的整数平方根的数字之和。 public class SquareRootHackerRankJarvis { static BigInteger limit; static BigInteger a; static BigInteger b; private static BigInteger squareroot(int n, BigInteger ten, BigInteger hundred, BigInteger five) { a = BigInteger.valueOf(n * 5); b = BigInteger.valueOf(5); while (b.compareTo(limit) == -1) { if (a.compareTo(b) != -1) { a = a.subtract(b); b = b.add(ten); } else { a = […]

字符串数组是否可变?

我想知道Java中的String数组是否可变? 我知道字符串是不可变的,但字符串数组怎么样? 如果我有一个字符串数组,并更改内容,是否会创建一个新的字符串对象? 或者实际值是否会改变? 提前致谢

Java Mutable BigInteger类

我正在使用BigIntegers进行计算,它使用一个调用multiply()大约1000亿次的循环,而BigInteger创建的新对象使得它非常慢。 我希望有人写过或找到了MutableBigInteger类。 我在java.math包中找到了MutableBigInteger,但它是私有的,当我将代码复制到一个新类时,会出现很多错误,其中大部分都是我不知道如何修复的。 像MutableBigInteger这样的Java类有哪些实现允许修改值?

Java中可变对象的封装

我正在学习“Java SE 7程序员I和II学习指南”,我不明白下面的解释。 class Fortress{ private String name; private ArrayList list; Fortress() {list=new ArrayList; String getName{return name;} void addToList(int x){list.add(x);} ArrayList getList(){return list;} // line 1 } 哪行代码打破了封装? 答案:第9行。“当封装像ArrayList这样的可变对象时,你的getter必须返回对该对象副本的引用,而不仅仅是对原始对象的引用”。 我没有理解解释或如何修改原始代码。 所以在getList()而不是 return list; 我们应该这样做吗? ArrayList list2=list; return list2;

Java集中对象的可变字段

假设你有一个包含在Java Set 中的对象(或者作为Map 中的一个关键字),我是否正确,用于确定身份或关系的任何字段(通过hashCode() , equals() , compareTo()等)如果不对集合上的操作造成未指定的行为,则无法更改? (编辑:在其他问题中提到) (换句话说,这些字段应该是不可变的,或者您应该要求从集合中删除对象,然后更改,然后重新插入。) 我问的原因是我正在阅读Hibernate Annotations参考指南 ,它有一个例子,其中有一个HashSet但是Toy类的字段name和serial是可变的,也用于hashCode()计算。我的头脑里出现了一面红旗,我只想确保理解它的含义。

在C中更改变量的值时,是创建了一个新原语还是当前原语是变异的?

我知道’mutable’和’immutable’是应该用来描述对象改变面向对象语言(如Java和Objective C)中的值的能力的术语。但是,我想提出它,因为它与我有关关于原始数据的问题。 我知道当我更改包含不可变对象的变量的值时,我实际上正在创建一个新对象。 但是,我想知道C中的原语数据是否与不可变对象类似。 我的意思是,当我更改保存原始数据的变量的值时,会创建一个新数据并由变量引用。 或者现有的原语实际上是否突变/修改了存储的数据值? 编辑#1: 问题#1:我想澄清一些误解(无论是我还是其他人),因为当我说“当我改变一个包含不可变对象的变量的值时我没有说清楚”,我实际创建了一个新对象。“ 当我这样说时,我并不是要将变量赋给现有对象。 例如: // Example 1: I did not mean this ————————- String x = “Hello World”; String y = x; ————————- // Example 2: What I meant is this ————————- String x = “Hello World”; //This will print out “Hello World” System.out.println(x); x = “Goodbye World”; //This […]