gpt4 book ai didi

java - 在 sysout 输出中将对象转换为 String,java

转载 作者:行者123 更新时间:2023-11-30 10:54:20 25 4
gpt4 key购买 nike

我一直在尝试找出如何放置 toString() 方法以使系统 println 看起来有意义,但我不知道我应该将此方法放在哪里才能使代码看起来正确。所以我添加所有构造函数 + getters 和 settes 的类点是:

public class Point {
double x, y;
public Point() {
x = 0;
y = 0;
}
public Point (double z) {
this.x = z;
this.y = z;
}
public Point(double x, double y) {
this.x = x; this.y= y;
}

public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
void setXY(double x, double y) {
if ( x == y) {
return;
}
this.x = x;
this.y = y;
}
public double odlegloscDo(Point p) {
return Math.sqrt(Math.pow(x, x) + Math.pow(y, y));
}
}

然后在 main 方法中,我将所有日期与新对象以及我真正想做的事情放在一起。并且还添加了一个简单公式的方法来执行我创建的对象的字段。如下图:

public class Odleglosc {

public static void main(String[] args) {

Point p1 = new Point();
Point p2 = new Point(2);
Point p3 = new Point(1,5);

System.out.println("p1: " + p1);
System.out.println("p2: " + p2);
System.out.println("p3: " + p3);
System.out.println("p3 equals p1 = " + p3.equals(p1));

double odleglosc = 0.0;
if (!p3.equals(p1)) {
odleglosc = p1.odlegloscDo(p3);
System.out.println("Odleglosc p1 -> p3 = " + odleglosc);


}

p3.setX(-9);
p2.setY(p3.getY());
double sum = p3.getX() + p2.getX();
p1.setX(sum);

System.out.println("================================");
System.out.println("p1: " + p1);
System.out.println("p2: " + p2);
System.out.println("p3: " + p3);

}
}

所以,主要问题是我得到了这个输出:

p1: zajecia4.Point@139a55
p2: zajecia4.Point@1db9742
p3: zajecia4.Point@106d69c
p3 equals p1 = false
Odleglosc p1 -> p3 = 1.4142135623730951
================================
p1: zajecia4.Point@139a55
p2: zajecia4.Point@1db9742
p3: zajecia4.Point@106d69c

我知道 toString() 方法是如何工作的,我只是不明白把它放在哪里以及如何使我的代码的打印输出有意义。请帮助我,否则在java类(class)中很难前进,我的导师实际上无法正确解释。另一件事是我的导师说在我的代码中我也应该把 equals 方法放在某个地方,但我对此也不理解。我已经把它放在我的 if 指令中,但我还应该把 equals 方法放在哪里,以便它正确地比较字段?

最佳答案

toString 方法返回对象的字符串表示形式。您需要以这种方式覆盖它:

public class Point {
double x, y;
...

@Override
public String toString() {
return x + " - " + y;
}
}

输出将是:

p1: 0 - 0
p2: 2 - 0
p3: 1 - 5

关于 Equals 方法,也可以用同样的方式覆盖它:

public class Point {
double x, y;
...

@Override
public String toString() {
return x + " - " + y;
}

@Override
public boolean equals(Point point) {
return this.x == point.x && this.y = point.y;
}
}

.equals 方法的实用性在于它允许您测试值的相等性,而不是引用相等性(这通常是使用'=='实现)。

关于java - 在 sysout 输出中将对象转换为 String,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33712009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com