繁体   English   中英

当从另一个类调用方法时-重新获得一个难以理解的值JAVA

[英]when calling method from another class - retuns an incomprehensible value JAVA

当我上二等班时,为什么会看到“ Car @ 15ab7626”? 在课程中,我必须看到20,是吗? 我已经使用了differnetnet combinatoin和询问谷歌,但不要理解为什么。

我有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);  
    }
}

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

不可理解的值JAVA是Object的文本表示形式。

当您执行System.out.println(a); 然后默认情况下, toString()方法对传递的object.调用object.

根据toString ()的文档

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

所以

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

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

 System.out.println(a.drive(10));

如果要打印来自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
}

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

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

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

这不是方法返回值的工作方式。 如果您想将结果显示为20,请使用以下代码替换SOP

 System.out.println(a.drive(10));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM