Java 为什么不';两个双变量是否更新为相同的值?

Java 为什么不';两个双变量是否更新为相同的值?,java,android,double,Java,Android,Double,我正在尝试制作一个将美元转换成欧元的应用程序。这个代码有效,但我不确定一件事。当我进行转换时,我不明白为什么美元的价值没有变化。我的意思是,当我给dolars赋值时,我让它们都指向同一个Double对象,那么两个Double对象内的Double字段不应该改变吗?如果是,为什么 EditText editText= (EditText) findViewById(R.id.editText); //Extract string from there String message = editTex

我正在尝试制作一个将美元转换成欧元的应用程序。这个代码有效,但我不确定一件事。当我进行转换时,我不明白为什么美元的价值没有变化。我的意思是,当我给dolars赋值时,我让它们都指向同一个Double对象,那么两个Double对象内的Double字段不应该改变吗?如果是,为什么

EditText editText= (EditText) findViewById(R.id.editText);
//Extract string from there
String message = editText.getText().toString();
//Convert amount to dollars
Double dolars = Double.parseDouble(message);
Log.i("Dolars before", dolars.toString());
Double euros = dolars * 0.835791;
Log.i("Euros",euros.toString());
Log.i("Dolars after",dolars.toString());e`

最简单的答案是,
Double
实例是不可变的,这意味着它们的内容不能更改

另外,让我们看看作业行:

Double euros = dolars * 0.835791;
这一行利用了一个称为自动装箱和自动取消装箱的Java特性。如果你想明确,你可以这样写:

Double euros = Double.valueOf(dolars.doubleValue() * 0.835791);

写出这样的长格式,您可以看到您正在从
dolars
中提取原语
double
,执行乘法,然后包装结果并将其分配给
euros
。所以这里没有“共享”价值观/参考资料。

你能澄清一下吗?你说“当我把欧元分配给多拉斯时”,但这会发生在哪里?是的,你只是再次打印多拉斯,而没有把欧元分配给它。汉克斯先生,这很有帮助。包装是否意味着返回的double值将被放入double欧元的double字段中?