Is the scope of a local variable always the entire body of a method?
No—only from where the variable was declared until the end of the body. Sometimes a local variable is declared in the middle of the body, close to the statement which first uses it.
It is a mistake to use the same identifier twice in the same scope. For example, the following is a mistake:
class CheckingAccount { . . . . private int balance; void processCheck( int amount ) { int amount; incrementUse(); if ( balance < 100000 ) charge = 15; else charge = 0; balance = balance - amount - amount ; } }
The scope of the formal parameter (amount
) overlaps the
scope of the local variable ( also named amount
),
so this is a mistake.
This is a different situation than the previous one where two separate
formal parameters were both named amount
.
In that situation the scopes did not overlap and there was no confusion.