首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java -通过引用传递双精度值

java -通过引用传递双精度值
EN

Stack Overflow用户
提问于 2011-04-22 04:06:31
回答 6查看 23.2K关注 0票数 11

如何在java中通过引用传递双精度值?

示例:

代码语言:javascript
运行
复制
Double a = 3.0;
Double b = a;
System.out.println("a: "+a+" b: "+b);
a = 5.0;
System.out.println("a: "+a+" b: "+b);

此代码打印如下:

代码语言:javascript
运行
复制
a: 3 b: 3
a: 5 b: 3

我的问题是把它打印出来:

代码语言:javascript
运行
复制
a: 3 b: 3
a: 5 b: 5

我的目标是:我正在用jess写一个专家系统,在这个应用程序中,一个段的长度应该是双精度的,因为双精度值不是在一个单独的段中;它在许多其他的段中,比例classes..etc,所有这些都在引用它,等待它改变,这样它们可能会满足一些规则。

如果我不能改变那个双精度值,我就不能有一个包含引用双精度值的对象的特定规则触发。

EN

回答 6

Stack Overflow用户

发布于 2011-04-22 04:16:00

Java不支持指针,所以你不能直接指向a的内存(就像在C/C++中一样)。

Java确实支持引用,但引用仅是对对象的引用。不能引用本机(内置)类型。所以当你执行时(自动装箱为你把代码转换成了下面的代码)。

双a=新双精度(3.0);

这意味着当你执行

代码语言:javascript
运行
复制
Double b = a;

您将获得对a的对象的引用。当你选择改变一个(自动装箱最终会把你上面的代码转换成这个)

代码语言:javascript
运行
复制
a = new Double(5.0);

这不会影响b对先前创建的new Double(3.0)的引用。换句话说,您不能通过直接操作a来影响b的引用(或者在Java中没有“远程操作”)。

也就是说,还有其他的解决方案。

代码语言:javascript
运行
复制
public class MutableDouble() {

   private double value;

   public MutableDouble(double value) {
     this.value = value;
   }

   public double getValue() {
     return this.value;
   }

   public void setValue(double value) {
     this.value = value;
   }
 }

 MutableDouble a = new MutableDouble(3.0);
 MutableDouble b = a;

 a.setValue(5.0);
 b.getValue(); // equals 5.0
票数 10
EN

Stack Overflow用户

发布于 2011-04-22 04:10:16

包装器类型在Java中是不可变的。一旦它们被创建,它们的值就不能被改变(当然除了通过反射魔法)。你为什么要尝试做你正在做的事情呢?

编辑:只是为了详细说明,当您设置时:

代码语言:javascript
运行
复制
a = 5.0;

实际发生的事情是这样的:

代码语言:javascript
运行
复制
a = new Double(5.0);

如果double是可变的,你可以这样做

代码语言:javascript
运行
复制
a.setValue(5.0);// this would have worked for mutable objects, but not in this case

当然,您也可以编写自己的类,但这里有很多陷阱,所以最好解释一下您的目标

票数 5
EN

Stack Overflow用户

发布于 2011-04-22 04:13:50

您可以尝试使用commons-lang中的MutableDouble

但这并不是说这与按引用传递无关-您没有传递任何内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5749251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档