0

当我跑二等舱时,我看到“Car@15ab7626”为什么?在teory我必须看到20,是吗?我已经使用过不同的组合并询问谷歌,但不理解为什么。

我有 1 节课

public class Car {  
    public int drive(int a) { 
        int distance = 2*a;
        return distance;  
    }
}

和二等

public class CarOwner { 
    public static void main(String[] args) {
        Car a = new Car();
        a.drive(10);
        System.out.println(a);  
    }
}
4

4 回答 4

5

您正在打印汽车对象,而不是驱动器打印的结果

那个 难以理解的价值 JAVA是 Object 的文本表示。

当您这样做时System.out.println(a);,默认情况下toString()方法调用已通过object.

根据toString ()的文档

返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。

所以

Car@15ab7626 是 Values 类的文本表示。

要打印您的drive()方法返回的结果,请打印,

 System.out.println(a.drive(10));
于 2013-10-14T08:32:27.203 回答
3

如果要打印该drive()方法的结果,请将结果分配给一个变量,然后打印它。

int result = a.drive(10);
System.out.println("Result = " + result);

或者直接将结果传递给System.out.println()方法;

System.out.println("Result = " + a.drive(10));

如果您想以a可读的方式打印对象,请覆盖类定义toString()中的方法。Car

@Override
public String toString() {
   return "This is a car"; //for example
}
于 2013-10-14T08:33:31.630 回答
1

您正在从驱动方法返回您拥有的值,但您没有打印它。

要打印出驱动方法的值,请使用

public class CarOwner {
  public static void main(String[] args) {
     Car a = new Car();
     System.out.println(a.drive(10));
  }
}
于 2013-10-14T08:36:31.383 回答
1

这不是方法返回值的工作方式。如果您想看到结果为 20,请将您的 SOP 替换为以下内容

 System.out.println(a.drive(10));
于 2013-10-14T08:39:51.383 回答