Java:添加两个对象
我在Greenfoot做了一个项目,我做了一个想象的数字课。 在我的项目中,我发现需要将两个虚构对象一起添加(或减去或其他),是否有办法添加两个这样的对象? 所以这就是它在完美世界中的表现:
Imaginary i1 = new Imaginary(1.7,3.14); Imaginary i2 = new Imaginary(5.3,9.1); //the class Imaginary has parameters (double real, double imaginary) Imaginary i3 = i1+i2;
那可能吗?
Java 没有运算符重载 。
例如,如果你可以写a + b
而不是a.add(b)
,那么BigDecimal
会更受欢迎。
方式1 。
Imaginary i3 = i1.add(i2);
方法:
public static Imaginary add(Imaginary i2) { return new Imaginary(real + i2.real, imaginary + i2.imaginary); }
方式2 。
Imaginary i3 = add(i1, i2)
方法:
public static Imaginary add(Imaginary i1, Imaginary i2) { return new Imaginary(i1.real + i2.real, i1.imaginary + i2.imaginary); }
操作符重载肯定会使设计比没有它更复杂,并且可能导致更复杂的编译器或减慢JVM。
您所描述的内容称为“运算符重载”,它无法用Java实现(至少是由您和我这样的程序员完成;开发人员可以自由执行此操作并使用String类完成此操作)。 相反,您可以创建一个add
方法并调用:
Imaginary i3 = i1.add(i2);
试试这样。
Imaginary i3 =new Imaginary(i1.real+i2.real,i1.imaginary+i2.imaginary);
如果要添加Object
,可以创建添加方法。
public static Imaginary add(Imaginary i1,Imaginary i2) { return new Imaginary(i1.real+i2.real,i1.imaginary+i2.imaginary); }
并从此创建对象
Imaginary i3 =add(i1,i2);
它可以在C ++中,但不是在Java中,定义一个函数addImaginary(Imaginary, Imaginary)
,它将添加两个Imaginarys并将它们存储在对象中将调用该方法。
它看起来像:
i3.addImaginary(i1, i2)
但是由你决定如何定义函数,它也可以这样做:
i3=i1.add(i2);
Java不支持用户定义的运算符重载。 但是你可以在你的Imaginary
类中创建一个方法:
public static Imaginary add(Imaginary other) { return new Imaginary(real + other.real, imaginary + other.imaginary); }
所以,你可以称之为:
Imaginary i3 = i1.add(i2);