Sorry, I find your question confusing: both m1() methods have no arguments. If you mean the System.out.println() it only has one argument, and that is just the concatenation of two strings (or rather a string and int converted to string).
Are you getting confused between the return value of the function m1() in the outer class and its sideeffect of printing a line? [ September 30, 2006: Message edited by: Barry Gaunt ]
At run time, method invocation requires five steps. First, a target reference may be computed. Second, the argument expressions are evaluated. Third, the accessibility of the method to be invoked is checked. Fourth, the actual code for the method to be executed is located. Fifth, a new activation frame is created, synchronization is performed if necessary, and control is transferred to the method code. ..... The argument expressions, if any, are evaluated in order, from left to right.