2013-10-14 3 views
0

Когда я запускаю второй класс, я вижу «Car @ 15ab7626», почему? в теории я должен видеть 20, да? У меня есть alredy used differnet combinatoin & спросите Google, но не понимаете почему.при вызове метода из другого класса - перенастраивает непонятное значение JAVA

У меня есть 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); 
    } 
} 
+0

Посмотрите на [это StackOverflow тема] (http://stackoverflow.com/questions/11659515/overriding-tostring-method) – Paolo

ответ

5

Вы печатаете объект автомобиля, а не результат печатается диск

Это непонятное значение JAVA представляет собой текстовое представление объекта.

Когда вы System.out.println(a); то по умолчанию toString() метод призовет прошел object.

В соответствии с Документами по toString()

Возвращает строковое представление объекта. В общем случае метод toString возвращает строку, которая «текстово представляет» этот объект.

Так

[email protected] это текстовое представление класса значений.

Для печати результата, который возвращается ваш drive() метод, печать,

System.out.println(a.drive(10)); 
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 
} 
+0

почему назначает требуемую переменную? – eis

+0

Для уточнения. :) –

1

Вы возвращаете значение, имеющееся у вас из метода накопителя, но вы его не печатаете.

Чтобы распечатать значение методы привода используйте

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

Это не так, как метод возвращаемых значений работы. Если вы хотите увидеть результат как 20, заменить СОП со следующим

System.out.println(a.drive(10)); 
Смежные вопросы