为什么两个Double变量都没有更新相同的值?

时间:2017-11-27 05:27:43

标签: java android double

我正在尝试制作一款将美元兑换成欧元的应用。这段代码有效,但我不确定一件事。当我进行转换时,我不明白为什么美元的价值也不会改变。我的意思是,当我将欧元分配给dolars时,我使它们都指向同一个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`

1 个答案:

答案 0 :(得分:1)

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

另外,让我们看一下分配线:

Double euros = dolars * 0.835791;

这一行利用了一项称为自动装箱和自动拆箱的Java功能。如果你想要明确,你可以这样写:

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

写出这样的长格式,您可以看到您从double中提取原始dolars,执行乘法,然后将结果包装并分配给euros 。所以这里没有“共享”值/引用。