簡體   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