为什么包装类(如Integer、Double等)没有设置其内部基本类型值的setter方法?
我之所以提出这个问题,是因为这种功能将简化计算,并使Java语言更加灵活。
让我举几个例子。
1)我们来看以下示例:
由于这个问题,在Wrapper上进行微积分比在普通的原始类型上执行要慢。使用setter可以更容易地增加内部值,而不需要在堆上分配另一个对象。
2)另一个困扰我的问题是,在Java中无法编写像C(使用指针)或C ++(指针或引用)中那样的交换函数。
如果我写
PS: 我的一个朋友建议我考虑更大的画面,并考虑并发性和类型不可变性。
所以你有解释吗? 谢谢!
我之所以提出这个问题,是因为这种功能将简化计算,并使Java语言更加灵活。
让我举几个例子。
1)我们来看以下示例:
Integer x = new Integer(5);
x++;
上述代码背后正在执行自动装箱。类似于:
int x_tmp = x.intValue();
x_tmp++;
x = new Integer(x_tmp); // Yes that's a new memory allocation
由于这个问题,在Wrapper上进行微积分比在普通的原始类型上执行要慢。使用setter可以更容易地增加内部值,而不需要在堆上分配另一个对象。
2)另一个困扰我的问题是,在Java中无法编写像C(使用指针)或C ++(指针或引用)中那样的交换函数。
如果我写
void swap(Integer x, Integer y)
,我无法访问内部值,因此我将无法交换值。PS: 我的一个朋友建议我考虑更大的画面,并考虑并发性和类型不可变性。
所以你有解释吗? 谢谢!