A: Yes, but Java allows an exception. If the static method definition is in the same class as the call, you don't have to write it. You could write the following, but I've never actually seen a program use it.
A; No. Methods in a class may be defined in any order, unlike some languages (eg, C++).
For this simple kilometers to miles conversion it isn't worth the effort to write a method. However, if this was a realistically large program, and if this kind of conversion had to be performed in several places in the program, it would be much better to put the conversion in a method so that there would be no errors, for example, when typing the constant 0.621. This small method is just practice.
The phrase "pass by reference" means that a reference to the actual parameter *variable* is passed, not the value that the variable contains.
When you pass the value of a variable, even if it's a reference, it's called "pass by value", which is Java's only way of passing parameters.
C++ has both "pass by reference" and "pass by value"; Java only has pass by value (altho those values often happen to be themselves references).
The most dramatic demonstration of this is that it's impossible to define
swap(a, b) in Java! For you Java programmers, this is a very useful
C++ function that exchanges the values of a and b, which you have to do awkwardly in Java with
temp = a; a = b; b = temp;